C# 3.0 关于自动属性的问题
如果实现自动属性会发生什么C# 3.0 关于自动属性的问题,c#-3.0,automatic-properties,C# 3.0,Automatic Properties,如果实现自动属性会发生什么 public string Foobar { get; set; } 然后对相应的变量进行编码 private string foobar = string.Empty; automatic属性将使用此变量还是编译器生成 另一个变量 否,自动属性将不使用您的变量。它将与任何其他名为foobar的字段一样 名称smilarity不会以任何方式影响编译器 编译器将在后台生成一个字段,但您不能以任何方式访问automatic属性的backing字段 显示了在IL(中间语
public string Foobar { get; set; }
然后对相应的变量进行编码
private string foobar = string.Empty;
automatic属性将使用此变量还是编译器生成
另一个变量 否,自动属性将不使用您的变量。它将与任何其他名为foobar的字段一样 名称smilarity不会以任何方式影响编译器 编译器将在后台生成一个字段,但您不能以任何方式访问automatic属性的backing字段
显示了在IL(中间语言,C#的组装)级别上如何工作。为什么会这样?支持字段不必(通常也不必)以这种方式命名。编译器不会使用该变量,不。要使用您的变量,您必须编写
private string foobar = string.Empty;
public string Foobar
{
get { return foobar; }
set { foobar = value; }
}
如果您有Resharper,您可以设置模板来执行此操作。Resharper还将从未使用的私有变量为您生成getter。我的意思是,当您不使用自动属性时。所以你不应该总是把名字“Foobar”和“Foobar”链接成你头脑中的“属性对应的支持字段”。