W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
命名空間是一個(gè)域,這在個(gè)域中所有的類(lèi)型名字必須是唯一的,不同的類(lèi)型分組歸入到層次化的命名空間,
命名空間的好處是:
如:?System.secruity.Cryptogtaphy
?
下面介紹namespace 關(guān)鍵字的使用。
namespace test
{
class class0
{
int i;
public class0()
{
}
}
}
例如:
namespace Outer.Middle.Inner {
class Class1 {}
class Class2 {}
}
命名空間中的點(diǎn)表示嵌套命名空間的層次結(jié)構(gòu)。
下面的代碼在語(yǔ)義上與前面的示例相同:
namespace Outer {
namespace Middle {
namespace Inner {
class Class1 {}
class Class2 {}
}
}
}
我們可以引用一個(gè)具有完全限定名的類(lèi)型。
例如,我們可以參考前面示例中的 Class1 作為 Outer.Middle.Inner.Class1。
在任何命名空間中未定義的類(lèi)型都在全局命名空間中。
using
指令導(dǎo)入一個(gè)命名空間,允許您引用沒(méi)有完全限定名稱(chēng)的類(lèi)型。
以下導(dǎo)入上一個(gè)示例的 Outer.Middle.Inner 命名空間:
using Outer.Middle.Inner;
class Test {
static void Main() {
Class1 c; // Don"t need fully qualified name
}
}
在外部命名空間中聲明的名稱(chēng)可以在內(nèi)部命名空間內(nèi)使用不合格。
在此示例中,名稱(chēng) Middle 和 Class1 被隱式導(dǎo)入 Inner:
namespace Outer {
namespace Middle {
class Class1 {}
namespace Inner {
class Class2 : Class1 {}
}
}
}
要引用命名空間層次結(jié)構(gòu)的不同分支中的類(lèi)型,請(qǐng)使用部分限定名稱(chēng)。
在下面的示例中,我們基于 Common.MyBase
的 MyClass
namespace Outer {
namespace Common {
class MyBase {}
}
namespace MyNamespace {
class MyClass : Common.MyBase {}
}
}
如果同一類(lèi)型名稱(chēng)出現(xiàn)在內(nèi)部和外部命名空間中,則內(nèi)部名稱(chēng)將勝出。
要引用外部命名空間中的類(lèi)型,必須限定其名稱(chēng)。
例如:
namespace Outer {
class myMethod { }
namespace Inner {
class myMethod { }
class Test {
myMethod f1; // = Outer.Inner.myMethod
Outer.myMethod f2; // = Outer.myMethod
}
}
}
您可以重復(fù)命名空間聲明,只要命名空間中的類(lèi)型名稱(chēng)不沖突:
namespace Outer.Middle.Inner {
class Class1 {}
}
namespace Outer.Middle.Inner {
class Class2 {}
}
我們可以在命名空間中嵌套一個(gè) using 指令。
在以下示例中,Class1 在一個(gè)作用域中可見(jiàn),但在另一個(gè)作用域中不可見(jiàn):
namespace Outer {
class Class1 {}
}
namespace N2 {
using Outer;
class Class2 : Class1 {}
}
namespace N2 {
class Class3 : Class1 {} // Compile-time error
}
導(dǎo)入命名空間可能導(dǎo)致類(lèi)型名沖突。
我們可以只導(dǎo)入你需要的特定類(lèi)型,給每個(gè)類(lèi)型一個(gè)別名。
例如:
using PropertyInfo2 = System.Reflection.PropertyInfo;
class Program { PropertyInfo2 p; }
整個(gè)命名空間可以進(jìn)行別名,如下所示:
using R = System.Reflection;
class Program {
R.PropertyInfo p;
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: