正确声明属性

时间:2015-12-08 19:01:49

标签: c# activereports

由于某些原因,自上次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; } }
}

哪种是最佳做法?

1 个答案:

答案 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属性的大量信息:

https://msdn.microsoft.com/en-us/magazine/dn802602.aspx