天天看點

[C#2] 3-局部類型、屬性通路器保護級别、命名空間别名限定符1. 局部類型2. 屬性通路器保護級别3. 命名空間别名限定符

1. 局部類型

C#1.0中,一個類隻可以放在一個檔案中。C#2.0中用了一個關鍵字"partial", 可以把一個類分成兩個部分[即一個類的實作可以在多個檔案中]。 編譯結果和寫在一個檔案中完全相同,更多的意義在于工程化的管理。

局部類型值适用與接口、類或者結構中,不支援枚舉[一般也沒這麼大的枚舉吧];

同一個類型的各個部分必須都有修飾符partial,必須位于相同的命名空間中,必須同時編譯、通路修飾符必須維持一緻性;

關鍵字partial 是一個上下文關鍵字,隻有和class、struct、interface放在一起時才有關鍵字的含義;

局部類型上的特性和接口具有累加效應;

如果一個類型有一個部分使用了abstract修飾符,那麼整個類将被視為抽象類;

如果一個類型有一個部分使用了sealed修飾符,那麼整個類将被視為密封類;

各部分不能使用互相沖突的修飾符,比如不能在一個部分上使用abstract,又在另一個部分上使用sealed;

各部分上指定的基類必須一緻。某些部分可以不指定基類,但如果指定,則必須相同。

2. 屬性通路器保護級别

C# 2.0允許對一個屬性的get和set通路器使用不同的通路級别修飾符[注意屬性通路器和屬性的概念]。

屬性通路器(get或set)上的通路修飾符必須比屬性的通路修飾符更嚴格;

隻能在一個屬性通路器(get或set)上指定 通路修飾符,另一個預設使用屬性的通路修飾符;

對于接口中的屬性隻能預設為public,不能設定屬性通路器(get或set)的通路修飾符。

3. 命名空間别名限定符

C#2.0允許使用命名空間别名限定符(::)來避免不同命名空間中類型名稱沖突的問題。 當使用命名空間别名限定符(::)時編譯器可以確定這是一個隻适用于"命名空間别名"的限定符[檢視IL代碼中使用的就是::], 不會辨析為其他類型、或者成員限定符(.)。關鍵字global可以放在命名空間别名限定符(::)的左邊, 它使得編譯器隻去搜尋那些所有的命名空間,而不會去搜尋其他的類型、或者成員。盡可能地使用命名空間别名限定符(::), 而減少使用點号(.)這樣的通用限定符[加快編譯器搜尋類型,編譯後無任何差別]。

作者:

Blackheart

出處:

http://linianhui.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀