《Effective C 》讀書筆記(1)

2022-03-26 08:55:32 字數 1022 閱讀 1643

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的定義。在宣告式中已經獲初值,所以無需在定義式給初值。當在類...