C# 程式設計/名稱空間
名稱空間用於提供應用程式所在的“名稱空間”。它們特別用於為 C# 編譯器提供程式中所有命名資訊的上下文,例如變數名。例如,如果沒有名稱空間,您將無法建立名為 Console 的類,因為 .NET 已經在其 System 名稱空間中使用了一個。名稱空間的目的是解決這個問題,併為您的應用程式釋放 .NET Framework 中定義的數千個名稱,以及讓您的應用程式不會佔用其他應用程式的名稱,如果您的應用程式旨在與另一個應用程式結合使用。因此,名稱空間的存在是為了解決編譯器否則無法做到的歧義。
名稱空間可以用這種方式輕鬆定義
namespace MyApplication
{
// The content to reside in the MyApplication namespace is placed here.
}
.NET Framework 為您提供了整個名稱空間層次結構,其中 System 名稱空間通常是最常見的名稱空間。名稱空間中的資料可以透過使用 . 運算子來引用,例如
System.Console.WriteLine("Hello, World!");
這將呼叫 WriteLine 方法,該方法是 System 名稱空間中 Console 類的成員。
透過使用 using 關鍵字,您可以明確告訴編譯器您將在程式中使用某個名稱空間。由於編譯器將知道這一點,因此它不再要求您為宣告的名稱空間鍵入名稱空間名稱,因為您已經告訴它應該在哪些名稱空間中查詢,如果它在您的應用程式中找不到資料。
因此,您可以像這樣鍵入
using System;
namespace MyApplication
{
class MyClass
{
void ShowGreeting()
{
Console.WriteLine("Hello, World!"); // note how System is now not required
}
}
}
名稱空間是全域性的,因此在一個 C# 原始檔中存在的名稱空間與另一個原始檔中具有相同名稱的名稱空間將導致編譯器將這兩個原始檔中不同的命名資訊視為駐留在同一個名稱空間中。
通常,您的整個應用程式都駐留在它自己的特殊名稱空間下,通常以您的應用程式或專案名稱命名。有時,擁有整個產品系列的公司會決定使用巢狀名稱空間,其中“根”名稱空間可以共享公司的名稱,而巢狀名稱空間則共享各自的專案名稱。如果您是一位開發人員,並且已經制作了一個具有可以在不同程式之間共享的常用功能的庫,那麼這將特別方便。如果庫和您的程式共享一個父名稱空間,那麼就不必使用 using 關鍵字明確宣告它,並且也不必完全鍵入它。如果您的程式碼對其他人開放使用,那麼使用您的程式碼的第三方開發人員會看到,相同公司開發了庫和程式。最後,庫和程式的開發人員還會將產品原始碼中的所有命名資訊分開,這樣可以減少頭痛,尤其是當使用通用名稱時。
要使您的應用程式駐留在巢狀名稱空間中,您可以用兩種方式來顯示它。要麼這樣
namespace CodeWorks
{
namespace MyApplication
{
// Do stuff
}
}
... 或像這樣
namespace CodeWorks.MyApplication
{
// Do stuff
}
兩種方法都是可接受的,並且在它們的作用上是相同的。