一尘不染

C#3.0+中属性和字段之间的区别

c#

我意识到这似乎是C#中的字段和属性之间的区别什么的副本但是我的问题(从我的角度来看)略有不同:

一旦我知道

  • 我不会将我的课程与“仅适用于房地产的技术”结合使用,并且
  • 我不会在getter / setter中使用验证代码。

有什么区别(样式/未来开发除外),例如设置属性时的某种控件?

之间是否还有其他区别:

public string MyString { get; set; }

public string myString;

(我知道,第一个版本需要C#3.0或更高版本,并且编译器确实会创建专用字段。)


阅读 266

收藏
2020-05-19

共1个答案

一尘不染

封装。

在第二个实例中,您刚刚定义了一个变量,在第一个实例中,该变量周围有一个getter / setter方法。因此,如果您决定以后再验证变量-会容易得多。

另外,它们在Intellisense中的显示方式也不同:)

编辑: 更新OPs更新的问题-如果您想在这里忽略其他建议,另一个原因是它根本不是一个好的OO设计。并且,如果您没有很好的理由这样做,请 始终
在公共变量/字段上选择一个属性。

2020-05-19