gpt4 book ai didi

c# - 是否可以在 C# 的构造函数中调用属性,这样我就不必两次编写值的验证检查?

转载 作者:行者123 更新时间:2023-11-30 19:10:53 26 4
gpt4 key购买 nike

我正在学习 Java,最近我也开始学习 C#。在 Java 中,我被告知要编写类的某些成员的 set 方法并进行验证检查,例如,如果它是一个字符串——字符串不能为空。然后我们在构造函数中调用 set 方法,当我使用构造函数初始化类的对象时,它会验证我的数据。

所以在 C# 中有所谓的属性,它们应该与 Java 中的 set/get 方法具有相同的逻辑,我可以在属性中验证我的数据。

如何在 C# 的构造函数中调用 set 方法/set 属性,这样我就不必编写两次验证代码 - 一次在属性中,一次在构造函数中?

代码:类的一些简单示例

class Program
{
private int someVariable;

public Program(int someVariable)
{
this.someVariable = someVariable;
}

public int SomeVariable
{
get { return someVariable; }
set
{
if (value > 5)
{
Console.WriteLine("Error");
}
else
{
someVariable = value;
}
}
}
static void Main(string[] args)
{
Program pr = new Program(10);
pr.SomeVariable = 10;
}
}

最佳答案

您将在构造函数中调用 this.SomeVariable,然后它会执行属性的 set 部分并验证值。现在,您通过直接设置变量 someVariable 值(有时称为“支持字段”)

来绕过它

通常在 C# 中,我将支持字段和属性放在一起,以便更容易阅读代码,如下所示:

int _someVariable;
public int SomeVariable
{
get { return _someVariable; }
set { /* ... */ }
}

关于c# - 是否可以在 C# 的构造函数中调用属性,这样我就不必两次编写值的验证检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637792/

26 4 0
文章推荐: c# - IProgress 是否在更新 UI 时等待/阻止
文章推荐: c# - MVC TempData 传递给 Jquery
文章推荐: C# 泛型方法 - 在类型上调用基类构造函数
文章推荐: c# - 如何在一行中将 list 或 list 转换为 ListView.ListViewItemCollection