2019/3/28 11:28:24
在ASP.NET中,.NET Framework爲我們提供了豐富的(de)基類,爲了能(néng)在程序中引用(yòng)這些基類,我們必須先引用(yòng)這些基類的(de)命名空間。類似在C++中引用(yòng)一個(gè)文(wén)件(jiàn)函數時,我必須先調用(yòng)該文(wén)件(jiàn),例如(rú)<#include studio.h>,其實它和(hé)ASP.NET中命名空間的(de)引用(yòng)是同一原理(lǐ)。但(dàn)是它們又(yòu)有(yǒu)本質上(shàng)的(de)區别。
在ASP.NET中,命名空間提供了一種組織相(xiàng)關類和(hé)其他(tā)類型的(de)方式。與文(wén)件(jiàn)或組件(jiàn)不同,命名空間是一種邏輯組合,而不是物(wù)理(lǐ)組合。在C#文(wén)件(jiàn)中定義類時,可(kě)以把它包括在命名空間定義中。以後,在定義另一個(gè)類,在另一個(gè)文(wén)件(jiàn)中執行(xíng)相(xiàng)關操作時,就可(kě)以在同一個(gè)命名空間中包含它,創建一個(gè)邏輯組合,告訴使用(yòng)類的(de)開(kāi)發人(rén)員這兩個(gè)類是如(rú)何相(xiàng)關的(de)以及如(rú)何使用(yòng)它們:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
namespace vlink
{
public class Agent
{
把一個(gè)類型放(fàng)在命名空間中,可(kě)以有(yǒu)效地(dì)給這個(gè)類型指定一個(gè)較長的(de)名稱,該名稱包括類型的(de)命名空間,後面是句點(.)和(hé)類的(de)名稱。在上(shàng)面的(de)例子中,Agen全名是vlink.Agent。這樣,有(yǒu)相(xiàng)同短名的(de)不同的(de)類就可(kě)以在同一個(gè)程序中使用(yòng)了。
也(yě)可(kě)以在命名空間中嵌套其他(tā)命名空間,爲類型創建層次結構:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
namespace vlink
{
namespace Agent
{
namespace CallBack
{
}
}
}
每個(gè)命名空間名都(dōu)由它所在命名空間的(de)名稱組成,這些名稱用(yòng)句點分(fēn)隔開(kāi),首先是最外層的(de)命名空間,最後是它自己的(de)短名。所以Agent命名空間的(de)全名是vlink.Agent,CallBack類的(de)全名是vlink.Agent.CallBack。
注意不允許在另一個(gè)嵌套的(de)命名空間中聲明(míng)多部分(fēn)的(de)命名空間。
命名空間與程序集無關。同一個(gè)程序集中可(kě)以有(yǒu)不同的(de)命名空間,也(yě)可(kě)以在不同的(de)程序集中定義同一個(gè)命名空間中的(de)類型。
using語句
顯然,命名空間相(xiàng)當長,鍵入起來很繁瑣,用(yòng)這種方式指定某個(gè)特定的(de)類也(yě)是不必要的(de)。如(rú)本章(zhāng)開(kāi)頭所述,C#允許簡寫類的(de)全名。爲此,要在文(wén)件(jiàn)的(de)頂部列出類的(de)命名空間,前面加上(shàng)using關鍵字。在文(wén)件(jiàn)的(de)其他(tā)地(dì)方,就可(kě)以使用(yòng)其類型名稱來引用(yòng)命名空間中的(de)類型了:
using System;
using vlink;
如(rú)前所述,所有(yǒu)的(de)C#源代碼都(dōu)以語句using System;開(kāi)頭,這僅是因爲Microsoft提供的(de)許多有(yǒu)用(yòng)的(de)類都(dōu)包含在System命名空間中。
如(rú)果using指令引用(yòng)的(de)兩個(gè)命名空間包含同名的(de)類,就必須使用(yòng)完整的(de)名稱(或者至少(shǎo)較長的(de)名稱),确保編譯器(qì)知道訪問哪個(gè)類型,例如(rú),類CallBack同時存在于Agent和(hé)vlink命名空間中,如(rú)果要在命名空間Agent中創建一個(gè)類Test,并在該類中實例化一個(gè)CallBack類,就需要指定使用(yòng)哪個(gè)類。
因爲using語句在C#文(wén)件(jiàn)的(de)開(kāi)頭,C和(hé)C++也(yě)把#include放(fàng)在這裏,所以從C++遷移到(dào)C#的(de)程序員常把命名空間與C++風格的(de)頭文(wén)件(jiàn)相(xiàng)混淆。不要犯這種錯誤,using語句在這些文(wén)件(jiàn)之間并沒有(yǒu)真正建立物(wù)理(lǐ)鏈接。C#也(yě)沒有(yǒu)對應于C++頭文(wén)件(jiàn)的(de)部分(fēn)。
命名空間的(de)别名
using關鍵字的(de)另一個(gè)用(yòng)途是給類和(hé)命名空間指定别名。如(rú)果命名空間的(de)名稱非常長,又(yòu)要在代碼中使用(yòng)多次,但(dàn)不希望該命名空間的(de)名稱包含在using指令中(例如(rú),避免類名沖突),就可(kě)以給該命名空間指定一個(gè)别名,其語法如(rú)下:
using alias = NamespaceName;
ASP.NET中各命名空間及作用(yòng)
命名空間 描述
Microsoft.CSharp 支持C#語言編譯和(hé)生成代碼
System 包含了基礎類,用(yòng)于定義類型/數組/字符串/事件(jiàn)/事件(jiàn)處理(lǐ)程序/異常處理(lǐ)/接口/數據類型轉換/數學計(jì)算/應用(yòng)程序環境管理(lǐ)等等
System.Coolections 包含了一組用(yòng)于管理(lǐ)對象集合(例如(rú)列表/隊列/數組/哈希表/字典等)的(de)類
System.Data 主要包括了組成ADO.NET體系結構的(de)類
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967