程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#的名稱空間

C#的名稱空間

編輯:關於C語言
本節課將介紹C#的名稱空間。其目的是: <br>
1.了解什麼是名稱空間。 <br>
<br>
2.了解如何實現"using"指示符。 <br>
<br>
3.了解"alias" 指示符的用法。 <br>
<br>
4.了解名稱空間的成員的內容。 <br>
<br>
在第一課中,你已經在簡單的hello程序中看到了"using System;"指示符的使用。該指示符可以讓你使用System名稱空間中的成員。在第一課中,未及對此作出詳細介紹,現在我們來解釋一下名稱空間的具體用法。一旦學完了本節課,你將了解"using"指示符及其相關內容。 <br>
<br>
作為C#的元素,名稱空間可以用來幫助組織程序的結構,可以避免兩套代碼集中命名的沖突。在程序代碼中,使用名稱空間是個良好的編程習慣,因為這有助於重用你的程序代碼。 <br>
<br>
1.清單6-1. The C# Station Namespace: NamespaceCSS.cs <br>
<br>
// Namespace Declaration<br>
using System;<br>
// The C# Station Namespace<br>
namespace csharp_station {<br>
// Program start class<br>
class NamespaceCSS {<br>
<br>
// Main begins program execution.<br>
public static void Main() {<br>
// Write to console<br>
Console.WriteLine("This is the new C# Station Namespace."); <br>
}<br>
}<br>
} <br>
<br>
說明 <br>
<br>
清單6-1演示了如何創建一個名稱空間。把單詞"namespace"放在"csharp_station"之前,就創建了一個名稱空間。"csharp_station"名稱空間內的大括號中包含了成員。 <br>
<br>
2.清單6-2 Nested Namespace 1: NestedNamespace1.cs <br>
<br>
// Namespace Declaration<br>
using System;<br>
// The C# Station Tutorial Namespace<br>
namespace csharp_station {<br>
namespace tutorial {<br>
// Program start class<br>
class NamespaceCSS {<br>
// Main begins program execution.<br>
public static void Main() {<br>
// Write to console<br>
Console.WriteLine("This is the new C# <br>
Station Tutorial Namespace."); <br>
}<br>
}<br>
}<br>
} <br>
<br>
說明 <br>
<br>
名稱空間可以建立一個代碼的組織結構。一個良好的編程習慣是:用層次模式來組織你的名稱空間。你可以把通用一些的名稱放在最頂層,裡層則放置一些專用一些的名稱。這個層次系統可以用嵌套的名稱空間表示。清單6-2演示了如何建立一個嵌套的名稱空間。在不同的子名稱空間內放置代碼,從而組織好你的代碼的結構。 <br>
<br>
3.清單6-3. Nested Namespace 2: NestedNamespace2.cs <br>
<br>
// Namespace Declaration<br>
using System;<br>
// The C# Station Tutorial Namespace<br>
namespace csharp_station.tutorial {<br>
// Program start class<br>
class NamespaceCSS {<br>
// Main begins program execution.<br>
public static void Main() {<br>
// Write to console<br>
Console.WriteLine("This is the new C# Station Tutorial Namespace."); <br>
}<br>
}<br>
} <br>
<br>
說明 <br>
<br>
清單6-3演示了另外一種編寫嵌套的名稱空間的方法。在"csharp_station"和"tutorial"之間置入點運算符,表明這是嵌套的名稱空間。結果同清單6-2。 相比而言,清單6-3 更易書寫。 <br>
<br>
4.清單6-4. Calling Namespace Members: NamespaceCall.cs <br>
<br>
// Namespace Declaration<br>
using System;<br>
namespace csharp_station {<br>
// nested namespace<br>
namespace tutorial {<br>
class myExample1 {<br>
public static void myPrint1() {<br>
Console.WriteLine("First Example of calling another namespace member.");<br>
}<br>
}<br>
}<br>
// Program start class<br>
class NamespaceCalling {<br>
// Main begins program execution.<br>
public static void Main() {<br>
// Write to console<br>
tutorial.myExample1.myPrint1(); <br>
csharp_station.tutorial.myExample2.myPrint2(); <br>
}<br>
}<br>
}<br>
<br>
// same namespace as nested namespace above<br>
namespace csharp_station.tutorial {<br>
class myExample2 {<br>
public static void myPrint2() {<br>
Console.WriteLine("Second Example of calling another namespace member.");<br>
}<br>
}<br>
} <br>
<br>
說明 <br>
<br>
1.清單6-4 的例子演示了用完整的名稱指示,調用名稱空間的成員。 <br>
<br>
一個完整的名稱指示包括名稱空間名,以及調用的方法名。程序的上半部分,在"csharp-station"名稱空間內嵌套的名稱空間"tutorial"中,定義了類"myExample1"及其方法"myPrint1"。 Main()方法中用完整的名稱指示:"tutorial.myExample1.myPrint()" 來進行調用。 因為Main()方法和tutorial名稱空間位於同一名稱空間內,如果使用"csharp_station"的全稱不是必需的。 <br>
<br>
2.清單6-4的下半部分,也是名稱空間"csharp_station.tutorial"的一部分。 <br>
<br>
類"myExample1"和"myExample2"都屬於該名稱空間。另外,也可以把它們分別寫入不同的文件,同時它們仍然屬於同一名稱空間。在Main()方法中,調用"myPrint2"方法時,采用了全稱:"csharp_station.tutorial.myExample2.myPrint2()"。 在這裡,必須使用全稱中"csharp_station",因為"myExample2"定義在外部。 <br>
<br>
3.注意:這裡對兩個不同的類起了不同的名字: <br>
<br>
"myExample1"和"myExample2"這是因為對於每個名稱空間來說,其中的成員必須有唯一的名稱。 記住:它們都處於同一名稱空間中,不能取名相同。方法"myPrint1"和"myPrint2" 名稱的不同僅僅是為了方便起見,即使同名也沒有問題,因為它們屬於不同的類。 <br>
<br>
5.清單6-5. The using Directive: UsingDirective.cs <br>
<br>
// Namespace Declaration<br>
using System;<br>
using csharp_station.tutorial;<br>
// Program start class<br>
class<br>
UsingDirective {<br>
// Main begins program execution.<br>
public static void Main() {<br>
// Call namespace member<br>
myExample.myPrint(); <br>
}<br>
}<br>
<br>
// C# Station Tutorial Namespace<br>
namespace csharp_station.tutorial {<br>
class myExample {<br>
public static void myPrint() {<br>
Console.WriteLine("Example of using a using directive.");<br>
}<br>
} <br>
<br>
說明 <br>
<br>
調用方法時,如果你不想打入全稱,可使用"using"指示符。在清單6-5中,有兩個"using"指示符。第一個指示符是"using System",同本教程其它地方出現的"using"指示符相同。你不需要每次都打上"System",只需要打入該名稱空間的成員方法名即可。在myPrint()中,"Console"是個"System"名稱空間中的成員類,該類有個"WriteLine"的方法。該方法的全稱是: "System.Console.WriteLine(...)"。 <br>
<br>
類似地,using指示符"using csharp_station.tutorial"可以讓我們在使用 "csharp_station.tutorial" 名稱空間的成員時,無需打入全稱。所以,我們可以打入"myExample.myPrint()"。如果不使用"using"指示符,每次實現該方法時,我們就得打入"csharp_station.tutorial.myExample.myPrint()" 。 <br>
<br>
6.清單6-6. The Alias Directive: AliasDirective.cs <br>
<br>
// Namespace Declaration<br>
using System;<br>
using csTut = csharp_station.tutorial.myExample; // alias<br>
// Program start class<br>
class AliasDirective {<br>
// Main begins program execution.<br>
public static void Main() {<br>
// Call namespace member<br>
csTut.myPrint();<br>
myPrint();<br>
}<br>
// Potentially ambiguous method.<br>
static void myPrint() {<br>
Console.WriteLine("Not a member of <br>
csharp_station.tutorial.myExample.");<br>
}<br>
}<br>
<br>
// C# Station Tutorial Namespace<br>
namespace csharp_station.tutorial {<br>
class myExample {<br>
public static void myPrint() {<br>
Console.WriteLine("This is a member of csharp_station.tutorial.myExample.");<br>
}<br>
}<br>
} <br>
<br>
說明 <br>
<br>
1.有時,往往遇到取名較長的名稱空間,而你可以把該名稱變短些。 <br>
<br>
這樣就增強了可讀性,還避免了同名的沖突。清單6-6 演示了如何使用別名指示符,創建別名的格式例子是:"using csTut = csharp_station.tutorial.myExample"。表達式"csTut"可以取代"csharp_station.tutorial.myExample",用在本文件的任何地方。在Main()方法中就使用了"csTut"。 <br>
<br>
2.在Main()方法中,調用了"AliasDirective" 類中"myPrint" 方法。 <br>
<br>
這與"myExample" 類的"myPrint"方法同名。 雖然同名,這兩個方法都各自正確地進行了調用,原因是:"myExample"類的"myPrint"方法用別名"csTut"表示。編譯器能夠准確地了解所要執行的是哪個方法。一旦漏掉了"csTut",編譯器將兩次調用"AliasDirective"類的"myPrint"方法。 <br>
<br>
3.另外一方面,如果我們沒有創建別名指示符,而是添加了"using csharp_station.tutorial.myExample"之後,再調用myPrint(),編譯器就會生成出錯信息,因為它不知道究竟是調用. "csharp_station.tutorial.myExample.myPrint()"方法呢?還是去調用"AliasDirective.myPrint()"方法。所以使用名稱空間是良好的編程習慣,可避免代碼中的沖突現象。 <br>
<br>
小結 <br>
到現在為止,我們已經了解在名稱空間中可以使用類,實際上,名稱空間可以使用如下類型的數據: <br>
<br>
類;結構;接口;枚舉;代理 <br>
<br>
在後面的課程中我們將詳細介紹這些數據類型。 <br>
<br>
概括來講,你已經了解了什麼是名稱空間,如何定義自己的名稱空間。如果你不想打入全稱,可以使用"using"指示符。一旦你想縮短名稱空間的長名,可以使用別名指示符。另外,除了類之外,你也了解了名稱空間可以使用的其他一些數據類型。<br>
<br>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved