自动实施的属性-隐藏成员的签名

时间:2018-07-25 10:26:48

标签: c#

创建自动实现的属性时,C#在后台某个位置为该属性生成一个成员。我一辈子都记不起这叫什么,或者该成员的命名约定叫什么。谷歌搜索了一段时间之后,我想问一下可能是个主意。

属性:

public int Age { get; set; }

(从内存中)我对隐藏成员的猜测:

private int i_age;

编辑#1

为澄清起见,我正在寻找自动生成的成员的术语,下面的Dmitry Bychenko对此进行了回答。术语是“背景字段”

2 个答案:

答案 0 :(得分:6)

为什么不进行简单的实验

using System.Reflection;

...

public class Experiment {
  public int Age { get; set; }
}

...

var fieldNames = string.Join(", ", typeof(Experiment)
    .GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
    .Select(field => field.Name));

Console.Write(fieldNames);

结果:

<Age>k__BackingField

请注意,不同于i_age实际字段名称<Age>k__BackingField 与任何字段都不会冲突(我们不能使用这样的名称声明字段)

答案 1 :(得分:0)

嗨,您可能想尝试一下。

private int i_age;
public int Age 
{ 
    get {return i_age;} 
    set {i_age = value;}
}