c#裏namespace是什麼意思?

namespace: 名字空間
namespace相當於windows操作系統中的文件夾,因爲現在的程序大多都是大項目或是代碼不


是一個人來完成的,難免會有變量聲明時出現重名的現象,比如程序員A定義了一個變量x程


序員B也定義了一個x,這時爲了精確定位是哪個x用namespace加以限制就可以了,比如A的x


在一個叫 proA的名字空間裏,B的在proB的名字空間裏那麼對x定位時可以直接用proB::x或


proA::x來表示具體的x,是不是和windows裏的c:\programe files和d:\programe files很


相似呢,就這個原理啦~
更詳細的解釋這裏還有一個:
 
在一個NAMESPACE中,我們也可以用一個別名指代現有的NAMESPACE或是一些其他類型數據。


別名的使用格式如下:


using 別名 = 一個已經存在的類型;


例如:using soholife = System;




下面我們通過幾個例子來加深一下理解:


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!同樣的我們也可以用下面的方


式來取得同樣的效果:


namespace N3


{


using R = N1.N2;


class B: R.A {}


}




說道這裏,我想提個問題,先看下面的例子:


namespace N1.N2


{


class A {}


}




namespace N3


{


class A {}


}




namespace N3


{


using A = N1.N2.A;


}




如果我們這樣寫,會有問題嗎?


答案當然是肯定的了,錯!因爲一個別名必須是在NAMESPACE中唯一的,而上面由於已經有





class a{},我們在用using A =N1.NE.A;就所以肯定要出錯了!不過如果我們該成:


using B =N1.N2.A;那麼結果如何呢?朋友門自己想想吧!我就不多說了!




本來以爲可以結束了,突然發現還有一個地方還沒有說清楚,可以說是就沒有說,呵呵,看


來只能晚些回家了,我門還是從問題看起吧:


namespace N1.N2


{


class A {}


}


namespace N3


{


using R = N1.N2;


}


namespace N3


{


class B: R.A {}


}


上面的例子中,不知道大家覺得如何,正確?錯誤?


如果我來回答的話,錯!(呵呵,以前做選擇題養成的習慣,凡是這樣問的答案就是錯!不


過原因是說不出來的了!)




真的上面這個程序,先開始看我也以爲是正確的,後來才知道。。。,唉,看來還是要多看


書的!


原來在一個分開的單元中使用別名的時候,別名只是在它所在的單元中(NAMESPACE或其它


)可以使用,而在其他單元中是不能夠用的,所以上面的那個例子中,在第二個N3中使用R


的時候,會提示R未知!當然了,如果我們想使用這樣的方式,我們還是有辦法的,就是把


別名R寫到N3的外面:如下


using R = N1.N2;


namespace N3


{


class B: R.A {}


}




好了說了這麼多,如果能全部理解的話,我想應該能適當的對NAMESPACE有一些概念了!如


果能這樣的話,我的目的也達到了!
發佈了8 篇原創文章 · 獲贊 5 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章