2012-11-05 35 views
4

當在程序中使用的命名空間的數量在運行時會發生什麼命名空間加載類?命名空間中的類是否完全加載或程序中使用的類是否已加載?如果程序中存在未使用的名稱空間怎麼辦?如何在運行時

+2

命名空間不_load_類。命名空間組織類名稱。 –

回答

6

命名空間真多編譯時構建然後運行時構建的。將類放入名稱空間主要僅影響類的名稱。任何類的「完全限定名稱」實際上是其名稱空間層次結構(用句點.分隔),後跟實際的類名稱。您不會在運行時「加載」命名空間,整個概念不存在。

當您編譯程序時,如果將其編譯爲庫(.dll),則可以添加對該.dll的引用,在這種情況下,該dll中的所有類都是程序中的「accessibe」。至於他們是否會被加載,它肯定可能是爲要加載它們,但機會是由於延遲初始化未使用的類不會對性能有顯著的影響。

當您添加using語句添加到文件的頂部爲一個命名空間,它沒有「負荷」該命名空間。編譯器將使用它來將所有「不合格」的類名稱解析爲「完全限定」的類名稱(在編譯時)。如果您在第一時間使用的只是完全合格的類名,你不需要任何using S(但真的雜波您的代碼,所以你無論如何都應該添加的話)。

1

可以use儘可能多的命名空間,只要你喜歡。命名空間不加載類。將名稱空間視爲便利功能,類似於path變量。如果你不使用命名空間,你會落得像這樣寫代碼:

System.Collections.Generic.List<string> myList = 
    new System.Collections.Generic.List<string>(); 

這將使代碼寫在短期內非常羅嗦乏味。通過using命名空間,你可以縮短代碼如下:

using System.Collections.Generic; 

// ..... further down in code: 
List<string> myList = new List<string>(); 

以下2個鏈接可以幫助擴展您的命名空間的理解:

http://msdn.microsoft.com/en-us/library/sf0df423%28v=vs.80%29.aspx

http://msdn.microsoft.com/en-us/library/0d941h9d%28v=vs.80%29.aspx

底線:namespaces幫助組織和控制項目中類的可見性範圍。

HTH ...