class
person
set }
} 具體屬效能給我們帶來什麼好處呢?為什麼必須使用屬性來訪問而不直接使用public來訪問呢?這些肯定是大家最想知道的。
在本item中,介紹了使用屬性可以為我們帶來以下的好處。
1、對賦值進行校驗或者其他的處理。
2、遵守封裝原則。
3、便於做執行緒同步訪問。
4、支援虛屬性、抽象屬性,並且可以在介面中使用。
5、在c#2.0中,屬性的get,set方法將支援不同的訪問許可權。
那我們為什麼要使**複雜話來使用屬性,而不直接使用public來訪問,這樣不是簡單的多嗎?不少人都有這樣的疑惑。讓我們來
看看通過屬性訪問和public來訪問有什麼區別。
首先來看看使用public訪問,當我們建立類的例項後,這時將會為public的字段分配動態記憶體。
而通過屬性訪問,在定義1個屬性的時候,編譯器會在生成的託管模組中產生以下3項:
·1個表示屬性的get訪問器的方法,只有定義了get訪問器方法才會建立
·1個表示屬性的set訪問器的方法,只有定義了set訪問器方法才會建立
·1個位於託管模組元資料中的屬性定義。
在我們使用屬性的時候,get and set都被標註為
hidebysig, specialname
。也就是說它們不能被
c#源**直接呼叫,它們也不是正是的類
型定義。你只能通過
property
來訪問它們。jit編譯器會將屬性訪問的**進行內聯(inline)處理,這樣使用屬性時就不會再有執行時的性
能損失(相對與字段訪問來講)。但要注意的是,只有對那些執行時間比較短的操作我們才應該使用屬性,而對於執行時間長的就應該使
用方法。
ps:內聯是指將1個方法內的**直接編譯到呼叫它們的方法中,從而消除呼叫方法時的執行負擔,但它的代價時編譯後的方法**
變得比較龐大。由於屬性的訪問器方法通常含有比較少的**,所以內聯它們會使**變得更小,執行效率更高!
Effective C 讀書筆記1
條款1 視c 為乙個語言聯邦 今天的c 已經是個多重范型程式語言,乙個支援過程形式 物件導向形式 函式形式 泛型形式 元程式設計形式的語言。為了理解c 必須認識其主要的次語言,總共4個 1.c2.object oriented c 3.template c 4.stl 條款2 盡量以const,en...
Effective C 讀書筆記 1
1.定義式是編譯器對此物件撥發記憶體的地點。2.explicit宣告的建構函式可被用於禁止編譯器執行非預期的型別轉換。注 對於單個引數的建構函式定義了從該形參型別到該型別的乙個 轉換。explicit只對建構函式起作用,用來抑制隱式轉換。class a int function a a 當呼叫 fu...
Effective C 讀書筆記1
tmp 模板元程式設計 0.explicit建構函式比non explicit建構函式好。1.可以用const 來代替 define 定義乙個常量。define沒有作用域,也沒有封裝性。class a const int a num num的定義。在宣告式中已經獲初值,所以無需在定義式給初值。當在類...