2010-04-14 37 views
1

場景:我需要將HttpUtility添加到我的項目中,並開始在我的使用指令集中添加「using System.Web」。然而HttpUtility類仍然不能解決,我發現(通過this問題)我需要添加一個對我的項目的引用。Visual Studio C#:爲什麼某個庫的「using」指令不足?

問題:爲什麼我需要爲大多數其他類使用「using」指令就可以添加對該庫的引用?

回答

26

問題:爲什麼我需要爲大多數其他類使用「using」語句就可以添加對此庫的引用?

using從未就足夠了,你總是需要的引用添加到包含類相關的DLL。

但是有些庫默認引用了你的項目 - 其中最重要的是mscorlib.dll。顯然你到目前爲止所用的所有課程都在這個圖書館中。

+0

這很清楚地解釋了,謝謝。 – JYelton 2010-04-14 16:47:52

+0

我應該注意到,我已經添加了一些第三方類,我已經參考過,然後添加了前面的語句。當我去使用HttpUtility並且假定它已經可用時,或者單獨使用「以某種方式使它解決」時,我總是有一種心理障礙。 – JYelton 2010-04-14 16:55:21

2

因爲有些名稱空間遍佈在程序集中。

.NET中最常用的名稱空間的程序集會自動添加到項目中,但如果您的項目尚未引用程序集,則必須添加程序集引用。

+0

感謝您的貢獻。 – JYelton 2010-04-14 16:51:57

9

由於Visual Studio在創建新項目時添加了許多常見dll的引用。

編輯:澄清,這裏有兩個問題 - 名稱空間和程序集。名稱空間表示類的邏輯層次結構,程序集是類集合的物理「容器」。一個程序集可以包含多個名稱空間,並且名稱空間可以跨多個程序集傳播(儘管這很少見)。使用指令意味着您不必完全限定類型名稱,例如您可以聲明List<T>而不是System.Collections.Generic.List<T>

Visual Studio在創建包含許多常用名稱空間(如System)的新項目時,會添加對各種程序集的引用。如果爲這些程序集中包含的名稱空間添加using指令,那麼它將起作用,但是如果您需要使用包含在不同程序集(如System.Web)中的名稱空間,則需要在名稱空間可以解決。

+0

因此,一個新的項目將有少數常用的類,其他任何需要您在using語句變得有用之前添加引用? – JYelton 2010-04-14 15:36:17

+1

@JYelton正確。這裏有兩個概念,命名空間和程序集。一個程序集包含該類,並且該類用名稱空間標記。將引用添加到程序集中,其中一些已默認添加,您可以訪問該類,例如System.IO.TextWriter。但是,您必須完全限定名稱爲System.IO.TextWriter的名稱空間。爲了縮短這個,你添加using語句。所以,使用語句只需要在每次要使用該名稱空間中的類時輸入「System.IO」即可節省您的時間。 – AaronLS 2010-04-14 15:39:35

+0

@JYelton - 它將有一些常用的* dll *(程序集)。每個dll可以包含大量的類。 – 2010-04-14 15:39:40

2

您在應用程序中使用的任何類型都位於某個組件中的某個名稱空間中。使用語句只允許使用類型而不指定它所屬的名稱空間。如果尚未向項目添加組裝引用,則不能使用其類型。默認情況下,每個項目中都包含幾個程序集引用中使用某些名稱空間的原因。

2

using語句只是刪除了在代碼中定義完整名稱空間的快捷方式,您需要添加對實際包含要實例化的類的庫的引用。

命名空間在許多圖書館

2

using System.Web傳播是使用指令,而不是使用聲明。但是你需要添加一個引用,因爲System.Web.dll不是包含在winform/wpf等項目中的標準dll。部分原因是因爲不太可能您將需要它,部分原因是它不支持「客戶端配置文件」。

這實際上只是一個圖書館管理問題; CLR是巨大的;它並不假定你想要的一切。

+0

這很好,我不想在一些小的實用程序中包含大量的庫。這很有道理,謝謝! – JYelton 2010-04-14 16:51:27

1

從根本上說,「使用」可以幫助編譯器知道在編譯文件之前需要將所有東西拉進來。一旦知道什麼需要拉出,就必須找到它,以便拉入。這就是參考文獻很重要的原因。

7

using指令僅用於語法簡單。即,不必編寫System.Web.HttpUtility,您可以將using System.Web;放在模塊的頂部,只需編寫HttpUtility.MethodName即可。但是,對庫的引用實際上允許您調用該庫中的類和方法。

+0

+1偉大的探索托馬斯! – 2010-04-14 15:41:20

+0

+1借調,這使得這個概念非常清晰。 – JYelton 2010-04-14 16:52:31

1

Reference意味着您要添加一個庫作爲依賴項到您的項目。 System.Web它是自己的DLL文件。

Using表示您在本地從引用中導入名稱空間或類。

相關問題