当我自动 属性 时,后台会发生什么?
When i make an automatic Property what happen's in the background?
编辑:一个与 this 完全不同的问题,我问的是自动属性在内部是如何工作的
当我自动 属性 后台发生了什么?
这等于
public int SomeProperty {get; set;}
这个
private int _someField;
public int SomeProperty
{
get { return _someField;}
set { _someField = value;}
}
这是字面上发生的事情(即创建了一个私有字段)还是它只是为了解释事情而呈现并且它的工作方式不同
是的,这正是发生的事情,这个:
public int SomeProperty {get; set;}
是这个的语法糖:
private int _someField;
public int SomeProperty
{
get { return _someField;}
set { _someField = value;}
}
它是一个语法糖:
private int _someField;
public int get_SomeProperty()
{
return _someField;
}
public void set_SomeProperty(int value)
{
_someField = value;
}
您可以使用 ildasm.exe
:
自己查看实现
生成了两种获取和设置私有字段值的方法。唯一的区别是生成字段的名称。
编辑:一个与 this 完全不同的问题,我问的是自动属性在内部是如何工作的
当我自动 属性 后台发生了什么?
这等于
public int SomeProperty {get; set;}
这个
private int _someField;
public int SomeProperty
{
get { return _someField;}
set { _someField = value;}
}
这是字面上发生的事情(即创建了一个私有字段)还是它只是为了解释事情而呈现并且它的工作方式不同
是的,这正是发生的事情,这个:
public int SomeProperty {get; set;}
是这个的语法糖:
private int _someField;
public int SomeProperty
{
get { return _someField;}
set { _someField = value;}
}
它是一个语法糖:
private int _someField;
public int get_SomeProperty()
{
return _someField;
}
public void set_SomeProperty(int value)
{
_someField = value;
}
您可以使用 ildasm.exe
:
生成了两种获取和设置私有字段值的方法。唯一的区别是生成字段的名称。