我意识到它似乎是What is the difference between a Field and a Property in C#?的复制品,但我的问题有一点不同(从我的角度来看):
一旦我知道这一点
是否有任何不同(除了样式/未来的开发),就像在设置属性时的某种类型的控件?
以下各项之间是否有其他区别:
public string MyString { get; set; }
和
public string myString;
(我知道,第一个版本需要C# 3.0或更高版本,并且编译器确实创建了私有字段。)
发布于 2009-03-17 09:38:05
封装。
在第二个实例中,您刚刚定义了一个变量,在第一个实例中,变量周围有一个getter / setter。因此,如果你决定以后再验证这个变量--这会容易得多。
此外,它们在Intellisense中的显示方式也不同:)
编辑: OPs的更新更新问题-如果你想忽略这里的其他建议,另一个原因是它根本不是很好的面向对象设计。如果你没有很好的理由这样做,总是选择一个属性而不是一个公共变量/字段。
发布于 2009-03-17 11:15:57
字段和属性看起来是一样的,但它们不是。属性是方法,因此有一些属性不支持的东西,还有一些属性可能会发生但在字段中永远不会发生的事情。
以下是不同点的列表:
out/ref
参数的输入。属性不能。readonly
)MemberTypes
,因此它们的位置不同(例如,GetFields
和GetProperties
)发布于 2009-03-17 09:39:38
几个快速、明显的区别
public string MyString { get;private set;}
公共虚拟字符串MyString { get;protected set;}
https://stackoverflow.com/questions/653536
复制相似问题