|
|
|
|
|
在 C# 中,命名空間用于在邏輯上安排類(lèi)、結(jié)構(gòu)、接口、枚舉和委托。C# 中的命名空間可以嵌套,這意味著一個(gè)命名空間也可以包含其他命名空間。.NET 框架已經(jīng)包含許多標(biāo)準(zhǔn)命名空間,如 System、System.Net、System.IO 等。除了這些標(biāo)準(zhǔn)命名空間之外,用戶(hù)還可以定義自己的命名空間。
聲明命名空間
C#語(yǔ)言提供了關(guān)鍵字命名空間來(lái)創(chuàng)建用戶(hù)自定義的命名空間,聲明命名空間的一般形式如下。
namespace <namespace_name>
{
//類(lèi)、結(jié)構(gòu)、枚舉等
}
其中 namespace 是必需的關(guān)鍵字,命名空間的名稱(chēng)可以是任何有效的 C# 標(biāo)識(shí)符或以逗號(hào)分隔的標(biāo)識(shí)符組合。
例如:
using System;
namespace Rajesh.Csharp.Codes
{
class MyClass
{
public MyClass()
{
Console.WriteLine("My Class");
}
}
class MyClient
{
public static void Main()
{
MyClass mc = new MyClass();// 顯示 'My Class'
}
}
}
聲明命名空間不能犯的錯(cuò)誤
首先,命名空間的名稱(chēng)可以是任何有效的 C# 標(biāo)識(shí)符或以逗號(hào)分隔的標(biāo)識(shí)符組合,除此之外還要符合一些特定要求。
以下代碼無(wú)法在 C# 中編譯,因?yàn)槊臻g內(nèi)的類(lèi)被聲明為私有(private)的。
namespace Rajesh.Csharp.Codes
{
private class MyClass
{
}
}
三種方法訪問(wèn)命名空間成員
可以使用完全限定名稱(chēng)訪問(wèn)命名空間成員,其中包括命名空間名稱(chēng)和來(lái)自命名空間外部的以點(diǎn)(.
)分隔的成員名稱(chēng)。
例如
using System;
namespace Rajesh.Csharp.Codes
{
class MyClass
{
public MyClass()
{
Console.WriteLine("My Class");
}
}
}
class MyClient
{
public static void Main()
{
//使用完全限定名稱(chēng)訪問(wèn)命名空間成員
Rajesh.Csharp.Codes.MyClass mc = new Rajesh.Csharp.Codes.MyClass();
}
}
但為了避免開(kāi)發(fā)人員每次都輸入完全限定名稱(chēng),C# 提供了另一個(gè)關(guān)鍵字,用于為命名空間定義一些別名。然后在編寫(xiě)我們的代碼時(shí),我們只用它們的類(lèi)名來(lái)引用類(lèi)。在編譯期間,編譯器將映射所有帶有別名的類(lèi)名以達(dá)到類(lèi)的完全限定名。找到完全限定名稱(chēng)后,它用于將代碼轉(zhuǎn)換為 IL 代碼。請(qǐng)記住,在 IL 代碼中,所有類(lèi)、接口、枚舉和委托都使用它們的完全限定名稱(chēng)進(jìn)行引用。
使用示例如下所示。
using Rajesh.Csharp.Codes;
MyClass mc = new MyClass();
請(qǐng)記住,在 C# 命名空間內(nèi),可以使用關(guān)鍵字 using。
namespace MyNameSpace
{
using System;
class MyClass
{
}
}
命名空間 MyNameSpace 中包含的任何代碼都可以訪問(wèn) System 命名空間而無(wú)需完全限定類(lèi)型名稱(chēng),但這些類(lèi)型不是 MyNameSpace 命名空間的成員。
同一個(gè)命名空間可以跨越多行,如下所示。
using System;
namespace Rajesh.Csharp.Codes
{
class MyClass
{
public MyClass()
{
Console.WriteLine("My Class");
}
}
}
namespace Rajesh.Csharp.Codes
{
class MyClient
{
public static void Main()
{
MyClass mc = new MyClass();
}
}
}
在關(guān)鍵字 using 的幫助下,可以為命名空間或類(lèi)型創(chuàng)建別名。
例如
using con = System.Console; // 創(chuàng)建別名
class MyClient
{
public static void Main()
{
con.WriteLine("Hey rajesh! how you");
}
}
嵌套命名空間
在 C# 中,命名空間可以相互嵌套,如下所示。
using System;
namespace Outer
{
namespace Inner
{
class MyClass
{
public MyClass()
{
Console.WriteLine("My Class");
}
}
}
}
class MyClient
{
public static void Main()
{
Outer.Inner.MyClass mc = new Outer.Inner.MyClass();
}
}
.NET 中的標(biāo)準(zhǔn)命名空間
以下是 .NET Framework 中的一些標(biāo)準(zhǔn)命名空間。
這些是 .NET 框架的一些重要命名空間。請(qǐng)記住,上面的列表并不完整。
總結(jié)
本文介紹了在C#中如何聲明和訪問(wèn)命名空間,以及一些要注意的問(wèn)題。
相關(guān)文章