可能重复:
C#中属性和字段之间的差异
我认为基本属性({ get; set; })与公共字段相同,只有能够在不破坏二进制兼容性的情况下更改它们的优点.按照我的答案/sf/answers/611471241/,我发现属性也有缺点.如果它们是值类型,则无法通过引用访问它们.为什么会这样,还有其他什么差异?
vcs*_*nes 14
我发现属性也有缺点.如果它们是值类型,则无法通过引用访问它们.为什么是这样
因为在封面下,财产只是一种方法.如果你看看IL,你会看到像get_PropertyName和的方法set_PropertyName.问题是为了支持使用引用,您需要能够返回方法的引用.
public ref T MyProperty
{
get
{
return ref _underlyingField;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:从C#7.0开始,可以使用上面描述的语法.
以前答案的剩余部分:
尽管有可能,但CLR需要进行一些调整以保证其可验证性.该属性的语法必须支持它.
但是,这有用吗?如你所说,一个领域可以做到.如果你需要它; 使用一个字段.支持它需要做很多工作.很可能只有少数情况适合; 并且会创建许多案例,首先使用一个字段可能会更好.