正确声明属性

本文关键字:属性 声明 | 更新日期: 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