1. 程式人生 > >CLR via C#學習筆記-第四章-類型基礎-命名空間和程序集

CLR via C#學習筆記-第四章-類型基礎-命名空間和程序集

程序集 microsoft 集中 歧義 str 可能 ring 需要 idg

4.3 命名空間和程序集

使用using指令簡化命名空間

C#編譯器通過using指令提供這個機制,例如

using System.IO;
using System.Text;

只需要在代碼中輸入FileStream和StringBuilder這兩個簡化的類型名稱,編譯器就會自動將引用展開成System.IO.FileStream和System.Text.StringBuilder。

不同命名空間的類重名

編譯器對待命名空間的方式存在潛在問題,可能兩個或更多類型在不同命名空間中同名。比如使用如下所示代碼的引用,二者都有Wifget的類型。微軟強烈建議為類型定義具有唯一性的名稱。為了消除歧義,必須顯式告訴編譯器創建哪個的。

using Microsoft;//嘗試附加"Microsoft."前綴
using Wintellect;//嘗試附加"Wintellect."前綴

創建別名

using指令的另一種形式允許為類型或命名空間創建別名,如下所示

//將WinerllectWidget 符號定義成Wintellect.Widget的別名
using WinerllectWidget = Wintellect.Widget

外部別名

C#還提供了外部別名(extern alias)的功能,來解決命名空間和類型都重名的情況。

外部別名還允許從同一程序集的兩個不同版本中訪問一個類型

命名空間和程序集的關系

命名空間和程序集(實現類型的文件)不一定相關,特別是,同一個明媚空間中的類型不可能在不同程序集中實現。同一個程序集也可能包含不同命名空間的類型。

CLR via C#學習筆記-第四章-類型基礎-命名空間和程序集