English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
我们举一个计算机系统中的实例,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:
namespace namespace_name { // Code-Aussage }
为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:
namespace_name.item_name;
下面的程序演示了命名空间的用法:
using System; namespace first_space { class namespace_cl { public void func() { Console.WriteLine("Inside first_space"); } } } namespace second_space { class namespace_cl { public void func() { Console.WriteLine("Inside second_space"); } } } class TestClass { static void Main(string[] args) { first_space.namespace_cl fc = new first_space.namespace_cl(); second_space.namespace_cl sc = new second_space.namespace_cl(); fc.func(); sc.func(); Console.ReadKey(); } }
Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:
Inside first_space Inside second_space
using Schlüsselwörter, die angeben, dass das Programm die Namen aus dem gegebenen Namensraum verwendet. Zum Beispiel verwenden wir in unserem Programm System Namensraum, in dem die Klasse Console definiert ist. Wir können nur:
Console.WriteLine ("Hello there");
Wir können den vollständigen Namensraum schreiben, wie folgt:
System.Console.WriteLine("Hello there");
Sie können auch verwenden using Namensraumanweisungen, damit der Name des Namensraums nicht vor dem Code stehen muss. Diese Anweisung teilt dem Compiler mit, dass die folgenden Codezeilen die Namen aus dem angegebenen Namensraum verwenden. Das folgende Beispiel zeigt die Anwendung des Namensraums.
Lassen Sie uns die Anweisung using verwenden, um den obigen Beispiel zu spezifizieren:
using System; using first_space; using second_space; namespace first_space { class abc { public void func() { Console.WriteLine("Inside first_space"); } } } namespace second_space { class efg { public void func() { Console.WriteLine("Inside second_space"); } } } class TestClass { static void Main(string[] args) { abc fc = new abc(); efg sc = new efg(); fc.func(); sc.func(); Console.ReadKey(); } }
Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:
Inside first_space Inside second_space
Namensräume können verknüpft werden, d.h. Sie können innerhalb eines Namensraums einen anderen Namensraum definieren, wie folgt:
namespace namespace_name1 { // Code-Aussage namespace namespace_name2 { // Code-Aussage } }
Sie können den Punkt-Operator (.), um die Mitglieder der verknüpften Namensräume wie folgt abzurufen:
using System; using SomeNameSpace; using SomeNameSpace.Nested; namespace SomeNameSpace { public class MyClass { static void Main() { Console.WriteLine("In SomeNameSpace"); Nested.NestedNameSpaceClass.SayHello(); } } // Eingebetteter Namensraum namespace Nested { public class NestedNameSpaceClass { public static void SayHello() { Console.WriteLine("In Nested"); } } } }
Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:
In SomeNameSpace In Nested