创建自动实现的属性时,C#会在后台某处为该属性生成一个成员。我一辈子都不记得这叫什么,也不记得成员的命名惯例叫什么。在谷歌上搜索了一段时间后,我想问一下可能是个主意。
属性:
public int Age { get; set; }
我对隐藏成员的猜测(根据记忆(:
private int i_age;
编辑#1
为了澄清,我在寻找自动生成成员的术语,Dmitry Bychenko在下面回答了这个问题。术语是"后备场">
为什么不进行一个简单的实验?
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
与任何字段都不冲突(我们不能用这样的名称声明字段(
嗨你可能想试试这个。
private int i_age;
public int Age
{
get {return i_age;}
set {i_age = value;}
}