2010-10-21 43 views
6

在MSDN上,我可以閱讀它做什麼,但我想知道它在技術上的作用(告訴編譯器在哪裏尋找類型..)?我的意思是用作指令。使用指令是幹什麼的?

回答

8

using指令的主要功能是使命名空間內的類型不受用戶代碼限制。它考慮在引用程序集中定義的名稱空間和類型集以及正在編譯的項目。

就拿在MyTypes.Dll

namespace MyTypes { 
    class Class1 {} 
} 

下面的定義現在考慮從不同的命名空間的另一個項目引用MyTypes.dll。如果不使用指令創建Class1一個我需要來限定名稱

MyTypes.Class1 local1 = new MyTypes.Class1(); 

using指令讓我刪除這個資格

using MyTypes; 
... 
Class1 local1 = new Class1(); 
+0

另外,如果在應用程序命名空間中找不到類型,編譯器將通過使用包含的命名空間進行搜索,對嗎? – Loj 2010-10-21 20:57:45

+1

@Mojmi的常見情況是。名稱查詢實際上非常複雜,我特別沒有評論它究竟是如何工作的,因爲我很有可能會錯失有趣的細節。 – JaredPar 2010-10-21 21:00:30

0

using通知編譯器哪些名稱空間用於搜索文件中使用的名稱,但未在文件中定義。

2

@ JaredPar的答案是正確的,但我想補充一點,並不完全像Java中的import一樣工作。 (有人糾正我,如果我錯了有關Java的import實際上將它導入到內存)

您需要包括以甚至能夠使用using無論是DLL或項目的參考,但是它沒有加載到內存中,直到你真正調用程序集中的方法/屬性/東西。所以你可以有using System.Linq;但是如果你實際上沒有使用任何Linq方法,Linq程序集永遠不會被加載。 (我不是100%肯定Linq是自己的物理組件,因爲命名空間和程序集不是1:1,但爲了舉例我假設它是)

0

使用只是告訴編譯器去到程序集的配置文件,然後用給定的名稱搜索一個特定的DLL,如果找到了DLL,那麼它將該dll鏈接到當前項目中。使用只是一個鏈接操作,讓DLL在內存中的共享空間中相互交談。 這裏下面的人是正確的