由于某些原因,自上次Visual Studio 2015更新以来,我的代码在从Grape City ActiveReports运行报告时崩溃了StackOverflow。当我在报表上设置属性时,它似乎崩溃了。问题是哪个是定义属性的最佳方法?
我想给我的类对象发送一些值,如:
MyClass clsObj = new MyClass();
clsObj.MyProperty = 1;
这就是我现在作为样本做的事情:
public class MyClass() {
public int MyProperty;
}
但是如果你使用prop的快捷方式并按下tab,你会得到:
public class MyClass() {
public int MyProperty { get; set; }
}
然后我会看到人们这样做的地方:
public class MyClass() {
private int _MyProperty;
public int MyProperty { get { return _MyProperty; } set {_MyProperty = value; } }
}
哪种是最佳做法?
答案 0 :(得分:2)
这完全取决于您希望如何使用您的属性。
通常的属性编写方式如下:
public int MyProperty { get; set; }
上面的代码与写这个代码相同:
public int MyProperty { get { return _MyProperty; } set {_MyProperty = value; } }
除非您想在属性getter和setter中执行其他逻辑,否则您不需要额外的支持字段。
在C#6.0中,您现在可以执行以下属性初始化程序:
public DateTime TimeStamp { get; } = DateTime.UtcNow;
您可以使用它而不是在类的构造函数中初始化属性。
至于你的代码不能正常工作,我无法告诉你,你还没有发布足够的信息。
Microsoft在此处提供了有关c#6.0属性的大量信息: