English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
我们举一个计算机系统中的实例,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:
namespace namespace_name { // Объявление кода }
为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:
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(); } }
Когда上面的 код будет компилироваться и выполняться, он произведет следующие результаты:
Inside first_space Inside second_space
using Ключевые слова указывают, что программа использует имена из данного пространства имен. Например, мы используем System Пространство имен, в котором определен класс Console. Мы можем написать просто:
Console.WriteLine("Hello there");
Мы можем написать полное ограниченное имя, например:
System.Console.WriteLine("Hello there");
Вы также можете использовать using Инструкции пространства имен, чтобы не нужно было добавлять имя пространства имен перед использованием. Эта инструкция tells the compiler that the subsequent code uses the names from the specified namespace. Следующий код демонстрирует использование пространства имен.
Давайте используем using для指定 повторения上面的 примера:
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(); } }
Когда上面的 код будет компилироваться и выполняться, он произведет следующие результаты:
Inside first_space Inside second_space
Пространства имен могут быть вложенными, то есть вы можете определить другой namespace внутри одного, например:
namespace namespace_name1 { // Объявление кода namespace namespace_name2 { // Объявление кода } }
Вы можете использовать оператор точек (.) для доступа к членам вложенного пространства имен, например:
using System; using SomeNameSpace; using SomeNameSpace.Nested; namespace SomeNameSpace { public class MyClass { static void Main() { Console.WriteLine("В SomeNameSpace"); Nested.NestedNameSpaceClass.SayHello(); } } // Внутри вложенного пространства имен namespace Nested { public class NestedNameSpaceClass { public static void SayHello() { Console.WriteLine("Внутри Вложенного"); } } } }
Когда上面的 код будет компилироваться и выполняться, он произведет следующие результаты:
Внутри SomeNameSpace Внутри Вложенного