正确声明属性
本文关键字:属性 声明 | 更新日期: 2023-09-27 18:26:07
自上次Visual Studio 2015更新以来,由于某种原因,在从Grape City ActiveReports运行报告时,我的代码会出现StackOverflow崩溃。当我在报表上设置属性时,它似乎崩溃了。问题是,定义属性的最佳方式是什么?
我想给我的类对象发送一些值,比如:
MyClass clsObj = new MyClass();
clsObj.MyProperty = 1;
这就是我现在作为一个样本所做的:
public class MyClass() {
public int MyProperty;
}
但如果你使用道具和按下标签的快捷方式,你会得到这个:
public class MyClass() {
public int MyProperty { get; set; }
}
然后我看到人们在哪里这样做:
public class MyClass() {
private int _MyProperty;
public int MyProperty { get { return _MyProperty; } set {_MyProperty = value; } }
}
哪种做法是最好的?
这一切都取决于您想要如何使用属性。
属性的常用书写方式如下:
public int MyProperty { get; set; }
上面的代码与写这个代码相同:
public int MyProperty { get { return _MyProperty; } set {_MyProperty = value; } }
您不需要额外的backing字段,除非您想在属性getter和setter中执行一些其他逻辑。
在C#6.0中,您现在可以执行这样的属性初始化程序:
public DateTime TimeStamp { get; } = DateTime.UtcNow;
您可以使用它,而不是在类的构造函数中初始化属性。
至于你的代码不起作用,我真的不能说,你还没有发布足够的信息。
微软在这里有很多关于c#6.0属性的信息:
https://msdn.microsoft.com/en-us/magazine/dn802602.aspx