可能重复:
What is the difference between a field and a property in C#
这有什么不同:
class Name {
public int x;
}
和此:
class Name {
int cx;
public int x {
get { return cx; }
set { cx = value; }
}
}
它是一样的还是有些差异? 谢谢
答案 0 :(得分:4)
他们是不同的。
在第一个x
是一个字段,后者x
是一个属性。虽然在代码中“属性就像字段一样访问”,但这只是C#的美妙之处;不同的定义实际上导致了不同的不兼容类型 1 。
使用自动属性将等同于后者(但更容易编写):
class Name {
public int x { get; set; }
}
我喜欢布莱恩·拉斯穆森(Brian Rasmussen)的this answer一个相关/重复的问题:
字段和属性看起来相同,但它们不 [相同]。属性是方法,因此某些属性不支持,以及可能在属性中发生的一些事情,但从不在字段的情况下。
然后,答案将列出一些关于使用和可观察语义的关键差异。
1 将字段更改为属性(或反之亦然)是类型中断更改并要求早期绑定(例如静态类型)代码针对新类型重新编译。