溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中Namespace的概念和用法

發(fā)布時(shí)間:2021-07-12 14:03:50 來(lái)源:億速云 閱讀:180 作者:chen 欄目:編程語(yǔ)言

這篇文章主要講解了“C#中Namespace的概念和用法”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C#中Namespace的概念和用法”吧!

我現(xiàn)在感到學(xué)好C#就是就是要知道C#的基本語(yǔ)法,C#的新的特點(diǎn),C#能干什么!

其中我感到不管如何,NAMESPACE都是很關(guān)鍵的??梢哉f(shuō)不是只對(duì)C#而言,而是整個(gè).NET都是由NAMESPACE組成的。所以我在看了C#的基本語(yǔ)法后,就直奔NAMESPACE來(lái)了,在這里寫(xiě)下自己的一些感覺(jué),希望能對(duì)后面學(xué)習(xí)的人有所幫助。

NAMESPACE在新的.NET環(huán)境下編程可以說(shuō)是無(wú)所不在??傊o我的感覺(jué)就是MS的新一代的語(yǔ)言的核心就是NAMESPACE,我們可以通過(guò)已經(jīng)有的NAMESPACE,做我們想做的和愿意做的。當(dāng)然如果你感覺(jué)現(xiàn)有的還不夠你使用的話,你也可以自己來(lái)使用現(xiàn)有的來(lái)擴(kuò)展,創(chuàng)建自己的NAMESPACE?。ǜ杏X(jué)怎么很象以前的COM、DCOM呢?)

如何建立一個(gè)NAMESPACE

定義一個(gè)NAMESPACE首先需要包含關(guān)鍵詞:namespace

格式如下:

namespace Your_nsname
{
//namespase主體內(nèi)容;
}

呵呵,給我的感覺(jué)就好象和Class或Struct一樣。不過(guò)它們除了形式有類(lèi)似外,確實(shí)在很多方面都不相同。

在一個(gè)NAMESPACE的主體內(nèi),可以引用其他的NAMESPACE,例如:

namespace Your_nsname{
//下面引用System和System.Xml著兩個(gè)NAMESPACE;
using System;
using System.Xml;
//namespase主體內(nèi)容;
}

在上面有一個(gè)需要注意的就是,如果要引用NAMESPACE的話,那么應(yīng)該在申明其它類(lèi)型前引用,如下是錯(cuò)誤的:

namespace Your_nsname{
//其它一些內(nèi)容;
//由于引用System和System.Xml放到了其它語(yǔ)句之后,所以。。。
using System;
using System.Xml;
}

另外對(duì)于NAMESPACE還有一個(gè)有趣的地方,我們先看一下下面的的兩個(gè)方式:

方式一:

namespace N1.N2
{ class A {}
class B {}
}

方式二:

namespace N1
{
namespace N2
{
class A {}
class B {}
}
}

在上面的兩種方式中,第二種很容易就能看懂,是在NAMESPACE N1中再創(chuàng)建一個(gè)NAMESPACE N2,而N2中有兩個(gè)類(lèi)(class)A、B。那么***種呢?其實(shí)上面兩個(gè)方式定義的其實(shí)是一模一樣的。NAMESPACE是可以嵌套定義的,我們可以使用第二種方式,層次感覺(jué)比較清楚,也可以使用***種方式。所不同的是,***中方式中,在N1和N2之間必須用分隔符“.”來(lái)表明他們兩者之間的層次關(guān)系!

在使用的時(shí)候用如下的方式:

N1.N2.A;

N1.N2.B;

在一個(gè)NAMESPACE中,我們也可以用一個(gè)別名指代現(xiàn)有的NAMESPACE或是一些其他類(lèi)型數(shù)據(jù)。

別名的使用格式如下:

using 別名 = 一個(gè)已經(jīng)存在的類(lèi)型;

例如:using soholife = System;

下面我們通過(guò)幾個(gè)例子來(lái)加深一下理解:

namespace N1.N2
{
class A {}
}
namespace N3
{
using A = N1.N2.A;
class B: A {}
}

這里,在N3中,A是N1.N2.A的別名,而N3.B則繼承于N1.N2.A。同樣的我們也可以用下面的方式來(lái)取得同樣的效果:

namespace N3
{
using R = N1.N2;
class B: R.A {}
}

說(shuō)到這里,我想提個(gè)問(wèn)題,先看下面的例子:

namespace N1.N2
{
class A {}
}
namespace N3
{
class A {}
}
namespace N3
{
using A = N1.N2.A;
}

如果我們這樣寫(xiě),會(huì)有問(wèn)題嗎?

答案當(dāng)然是肯定的了!因?yàn)橐粋€(gè)別名必須是在NAMESPACE中***的,而上面由于已經(jīng)有了class a{},我們?cè)谟胾sing A =N1.NE.A;就肯定要出錯(cuò)了!

不過(guò)如果我們改成:using B =N1.N2.A;那么結(jié)果如何呢?朋友門(mén)自己想想吧!我就不多說(shuō)了!

我們?cè)賮?lái)看看下面這個(gè)例子:

namespace N1.N2
{
class A {}
}
namespace N3
{
using R = N1.N2;
}
namespace N3
{
class B: R.A {}
}

上面的例子中,不知道大家覺(jué)得是否正確。

實(shí)際上這個(gè)是錯(cuò)誤的!原來(lái)在一個(gè)分開(kāi)的單元中使用別名的時(shí)候,別名只是在它所在的單元中(NAMESPACE或其它)可以使用,而在其他單元中是不能夠用的,所以上面的那個(gè)例子中,在第二個(gè)N3中使用R的時(shí)候,會(huì)提示R未知!當(dāng)然了,如果我們想使用這樣的方式,我們還是有辦法的,就是把別名R寫(xiě)到N3的外面,如下:

using R = N1.N2;
namespace N3
{
class B: R.A {}
}

如果上面的文章能全部理解的話,我想你應(yīng)該能對(duì)NAMESPACE有一些概念了!如果能這樣的話,我的目的也達(dá)到了!

感謝各位的閱讀,以上就是“C#中Namespace的概念和用法”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C#中Namespace的概念和用法這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI