日期:2009-07-10  浏览次数:20454 次

本节课将介绍C#的名称空间。其目的是:
1.了解什么是名称空间。

2.了解如何实现"using"指示符。


3.了解"alias" 指示符的用法。

4.了解名称空间的成员的内容。

在第一课中,你已经在简单的hello程序中看到了"using System;"指示符的使用。该指示符可以让你使用System名称空间中的成员。在第一课中,未及对此作出详细介绍,现在我们来解释一下名称空间的具体用法。一旦学完了本节课,你将了解"using"指示符及其相关内容。

作为C#的元素,名称空间可以用来帮助组织程序的结构,可以避免两套代码集中命名的冲突。在程序代码中,使用名称空间是个良好的编程习惯,因为这有助于重用你的程序代码。

1.清单6-1. The C# Station Namespace: NamespaceCSS.cs

// Namespace Declaration
using System;
// The C# Station Namespace
namespace csharp_station {
// Program start class
class NamespaceCSS {

// Main begins program execution.
public static void Main() {
// Write to console
Console.WriteLine("This is the new C# Station Namespace.");
}
}
}

说明

清单6-1演示了如何创建一个名称空间。把单词"namespace"放在"csharp_station"之前,就创建了一个名称空间。"csharp_station"名称空间内的大括号中包含了成员。

2.清单6-2 Nested Namespace 1: NestedNamespace1.cs

// Namespace Declaration
using System;
// The C# Station Tutorial Namespace
namespace csharp_station {
namespace tutorial {
// Program start class
class NamespaceCSS {
// Main begins program execution.
public static void Main() {
// Write to console
Console.WriteLine("This is the new C#
Station Tutorial Namespace.");
}
}
}
}

说明

名称空间可以建立一个代码的组织结构。一个良好的编程习惯是:用层次模式来组织你的名称空间。你可以把通用一些的名称放在最顶层,里层则放置一些专用一些的名称。这个层次系统可以用嵌套的名称空间表示。清单6-2演示了如何建立一个嵌套的名称空间。在不同的子名称空间内放置代码,从而组织好你的代码的结构。

3.清单6-3. Nested Namespace 2: NestedNamespace2.cs

// Namespace Declaration
using System;
// The C# Station Tutorial Namespace
namespace csharp_station.tutorial {
// Program start class
class NamespaceCSS {
// Main begins program execution.
public static void Main() {
// Write to console
Console.WriteLine("This is the new C# Station Tutorial Namespace.");
}
}
}

说明

清单6-3演示了另外一种编写嵌套的名称空间的方法。在"csharp_station"和"tutorial"之间置入点运算符,表明这是嵌套的名称空间。结果同清单6-2。 相比而言,清单6-3 更易书写。

4.清单6-4. Calling Namespace Members: NamespaceCall.cs

// Namespace Declaration
using System;
namespace csharp_station {
// nested namespace
namespace tutorial {
class myExample1 {
public static void myPrint1() {
Console.WriteLine("First Example of calling another namespace member.");
}
}
}
// Program start class
class NamespaceCalling {
// Main begins program execution.
public static void Main() {
// Write to console
tutorial.myExample1.myPrint1();
csharp_station.tutorial.myExample2.myPrint2();
}
}
}

// same namespace as nested namespace above
namespace csharp_station.tutorial {
class myExample2 {
public static void myPrint2() {
Console.WriteLine("Second Example of calling another namespace member.");
}
}
}

说明

1.清单6-4 的例子演示了用完整的名称指示,调用名称空间的成员。

一个完整的名称指示包括名称空间名,以及调用的方法名。程序的上半部分,在"csharp-station"名称空间内嵌套的名称空间"tutorial"中,定义了类"myExample1"及其方法"myPrint1"。 Main()方法中用完整的名称指示:"tutorial.myExample1.myPrint()" 来进行调用。 因为Main()方法和tutorial名称空间位于同一名称空间内,如果使用"csharp_station"的全称不是必需的。

2.清单6-4的下半部分,也是名称空间"csharp_station.tutorial"的一部分。

类"myExample1"和"myExample2"都属于该名称空间。另外,也可以把它们分别写入不同的文件,同时它们仍然属于同一名称空间。在Main()方法中,调用"myPrint2"方法时,采用了全称:"csharp_station.tutorial.myExample2.myPrint2()"。 在这里,必须使用全称中"csharp_station",因为&qu