正确声明属性

Declaring properties properly

出于某种原因,自上次 Visual Studio 2015 年更新以来,当 运行 我从 Grape City ActiveReports 生成报告时,我的代码因 Whosebug 而崩溃。当我在报告上设置属性时,它似乎崩溃了。问题是哪种是定义属性的最佳方式?

我想向我的 class 对象发送一些值,例如:

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; } }
}

最佳做法是什么?

这完全取决于您想如何使用您的财产。

通常属性的写法是这样的:

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;

您可以使用它而不是在 class.

的构造函数中初始化 属性

至于你的代码不能用,我真的不知道,你没有发布足够的信息。

Microsoft 在此处提供了大量有关 c# 6.0 属性的信息:

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