- 声明空属性,编译器自动生成对应私有成员字段
- 在VS中可以使用快捷键Ctrl+R+E自动生成
- C#示例
public class AutoProperties
{
public string Name { get; set; }
public int Age { get; set; }
}
- 编译后的IL代码
编译源代码说明:
- 万物皆对象,类在编译的时候都继承了Object
- .ctor是一个构造函数,当一个类中没有任何构造函数的时候,在编译的时候都会自动添加一个构造函数
- .property Name属性,.get和.set分别调用两个方法get_Name()和set_Name(string)【稍后解释】
- .field 字段,在类里面声明一个【私有的】【string】类型的,名字为【<Name>k_BackingField】全局变量,该变量为上边的Name属性准备的
- get_Name()方法编译源码:
- 万物皆对象,类在编译的时候都继承了Object
[CompilerGenerated]
public string get_Name()
{
return this.<Name>k__BackingField;
}
- set_Name(string)方法编译源码:
[CompilerGenerated]
public void set_Name(string value)
{
this.<Name>k__BackingField = value;
}
- 通过查看源码即可得知自动属性的工作原理