2017-04-22 50 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

生成兩種方法來獲取和設置專用字段的值。唯一的區別是生成字段的名稱。

相關問題