创建自动实现的属性时,C#在后台某个位置为该属性生成一个成员。我一辈子都记不起这叫什么,或者该成员的命名约定叫什么。谷歌搜索了一段时间之后,我想问一下可能是个主意。
属性:
public int Age { get; set; }
(从内存中)我对隐藏成员的猜测:
private int i_age;
编辑#1
为澄清起见,我正在寻找自动生成的成员的术语,下面的Dmitry Bychenko对此进行了回答。术语是“背景字段”
答案 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;}
}