如果实现自动属性
会发生什么public string Foobar { get; set; }
然后编写相应的变量
private string foobar = string.Empty;
自动属性是使用此变量还是编译器生成 一个额外的变量?
答案 0 :(得分:1)
不,自动属性不会使用您的变量。它就像任何一个名为foobar的领域一样。
名称smilarity不会以任何方式影响编译器。
编译器将在幕后生成一个字段,但您无法以任何方式访问自动属性的支持字段。
This post显示了IL(Intermediate Langauge,C#汇编)级别的工作原理。
答案 1 :(得分:0)
编译器不会使用该变量,不会。要使用您的变量,您必须编写
private string foobar = string.Empty;
public string Foobar
{
get { return foobar; }
set { foobar = value; }
}
如果您有Resharper,则可以设置模板来执行此操作。 Resharper还会为您生成一个未使用的私有变量的getter。
答案 2 :(得分:-1)
为什么会这样?支持字段不一定(通常也不是)以这种方式命名。