0

如果你实现一个自动属性会发生什么

public string Foobar { get; set; }

然后编码对应的变量

private string foobar = string.Empty;

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

4

3 回答 3

1

不,自动属性不会使用您的变量。它就像任何其他称为 foobar 的字段一样。

名称相似性不会以任何方式影响编译器。

编译器将在幕后生成一个字段,但您无权以任何方式访问自动属性的支持字段。

这篇文章展示了在 IL(中级语言,C# 汇编)级别的工作方式。

于 2010-11-12T09:18:48.963 回答
0

编译器不会使用该变量,不。要使用您的变量,您必须编写

private string foobar = string.Empty;

public string Foobar 
{
    get { return foobar; }
    set { foobar = value; }
}

如果您有 Resharper,您可以设置模板来执行此操作。Resharper 还将为您从未使用的私有变量中生成一个 getter。

于 2010-11-12T09:50:01.553 回答
-1

为什么会呢?支持字段不必(并且通常不会)以这种方式命名。

于 2010-11-12T09:28:26.283 回答