2017-04-22 77 views
2

编辑:与this完全不同的问题我在问自动属性如何在内部工作当我做一个自动属性什么发生在后台?

当我做一个自动属性什么发生在后台?

这等于

public int SomeProperty {get; set;} 

private int _someField; 
public int SomeProperty 
{ 
    get { return _someField;} 
    set { _someField = value;} 
} 

难道这是字面上情况(即创建一个私有字段),或者只提供给刚刚解释的东西,它的工作方式不同

+0

一个完全不同的问题,为什么把它标记为重复-_- –

+1

我已经重新提出这个问题,因为重复问题的答案只提到一个转换,即代码是等价的,但他们没有提到属性只是方法,get和set方法是在幕后生成的 –

回答

5

是的,它正是发生了什么,这:

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实现:

enter image description here

生成两种方法来获取和设置专用字段的值。唯一的区别是生成字段的名称。

相关问题