关于自动属性的问题

时间:2010-11-12 09:15:21

标签: c#-3.0 automatic-properties

如果实现自动属性

会发生什么
public string Foobar { get; set; }

然后编写相应的变量

private string foobar = string.Empty;

自动属性是使用此变量还是编译器生成 一个额外的变量?

3 个答案:

答案 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)

为什么会这样?支持字段不一定(通常也不是)以这种方式命名。