从 C# 3.0 开始,有新的语法可以从属性自动生成实例变量:
public string Foo { get; set; }
但是没有办法访问底层的支持字段。所以我真的不明白它的意义,因为声明相同的实例变量会产生相同的效果,而无需调用“getter”和“setter”的开销。
public string Foo;
像这样声明属性:
public string Foo { get; }
或者
public string Foo { set; }
完全没用,因为我们无法编写相应的代码。阅读该字段的内容。
有人能很好地解释为什么在 C# 中他们付出了所有努力来引入这种语法糖吗?
编辑:人们似乎认为我混淆了字段和属性,所以让我澄清一下我所说的话。
如果您使用具有自动生成字段的属性:
public string Foo { get; set; }
那么就没有意义了,因为每当您访问属性时,每次访问属性时都会对get_Foo()
“getter”进行开销调用,并且由于您没有在“getter”中做任何特别的事情,所以没有糊状创建此属性的兴趣。创建字段将完全相同,并且速度更快(优化)。
谢谢