Пространство имен в C#

В этом руководстве вы узнаете о пространствах имен, о том, как их определять, как получать доступ к их членам и использовать в программах на C#.

Пространства имен в C# определяет область кода, в которой гарантируется уникальность всех идентификаторов. Это своеобразные контейнеры, в которых находятся другие пространства имен, классы и т. д.

Пространство имен может включать следующие типы данных:

  1. другие пространства имен;
  2. классы;
  3. интерфейсы;
  4. структуры; 
  5. делегаты.

Мы обсудим эти темы в следующих уроках. Пока поговорим только о классах и пространствах имен.

Пространства имен — необязательная часть программы на C#. Они нужны, чтобы управлять крупными проектами и писать чистый код.

Давайте разберемся с концепцией пространства имен на примере из реальной жизни. У вас на компьютере, скорее всего, куча файлов и папок. Представьте, как бы сложно было ими управлять, если бы они все лежали в одном каталоге. Вот почему мы помещаем связанные файлы и папки в отдельные каталоги. Это упрощает работу с данными.

Так же и с пространствами имен: они помогают нам организовывать разные члены, если мы поместим их в одно и то же пространства.

Пространство имен еще и решает проблему конфликта имен. Он возникает, когда два одинаковых идентификатора находятся в одной области видимости, и компилятор не может понять, какой из этих двух следует использовать в конкретной ситуации.

Определяем пространства имен

В C# определить пространство имен можно с помощью ключевого слова namespace.

namespace имя_пространства_имен
{
  // Тело пространства имен
}
Например:
namespace MyNamespace
{
    class MyClass
    {
        public void MyMethod()
        {
            System.Console.WriteLine("Создаем пространство имен");
		}
	}
}

В приведенном выше примере мы создали пространство имен с именем MyNamespace. Оно состоит из класса MyClass. MyMethod в свою очередь — метод класса MyClass.

Доступ к членам пространства имен

Доступ к членам пространства имен можно получить с помощью оператора .. Вот, как это делается:

Имя_пространства_имен.Имя_члена

Например, если нам нужно создать объект класса MyClass, это можно сделать вот так:

MyNamespace.MyClass myClass = new MyNamespace.MyClass();

Мы обсудим создание объектов в следующих уроках. А пока просто постарайтесь понять, как мы получаем доступ к классу MyClass.

Пример 1. Объявляем пространство имен

using System;

namespace MyNamespace
{
    public class SampleClass
    {
        public static void myMethod()
        {
            Console.WriteLine("Создаем пространство имен");
        }
    }
}
 
namespace MyProgram
{
    public class MyClass
    {
        public static void Main()
        {
            MyNamespace.SampleClass.myMethod();
        }
    }
}

Вывод:

Создаем пространство имен

В приведенной выше программе мы создали пространство имен MyNamespace и получили доступ к его членам из метода Main() класса MyClass. Как было сказано ранее, оператор . используется для доступа к членам пространства имен.

В методе Main() метод myMethod() вызывается с помощью оператора ..

Ключевое слово using

Пространство имен можно включить в программу с помощью ключевого слова using. Вот, как это делается:

using Namespace-Name;
Например:
using System

Преимущество такого подхода заключается в том, что нам не нужно указывать полное имя члена пространства имен каждый раз, когда мы обращаемся к нему.

Если в начале программы мы написали

using System

дальше спокойно можно писать

Console.WriteLine ("Привет, мир!");

вместо полного имени

System.Console.WriteLine ("Привет, мир!");

Вложенное пространство имен

Внутри одного пространства имен может содержаться другое пространство имен. Это называется вложенным пространством имен. Доступ к вложенному пространству имен и его членам получается точно так же, с помощью оператора ..

Синтаксис

namespace Имя_пространства_имен
{
  namespace Имя_вложенного_пространства_имен
  {
      // Тело вложенного пространства имен
}
}

Пример 2. Работаем с вложенным пространством имен

using System;
 
// Вложенное пространство имен
namespace MyNamespace
{
    namespace Nested
    {
        public class SampleClass
        {
            public static void myMethod()
            {
                Console.WriteLine("Пример вложенного пространства имен");
            }
        }
    }
}
 
namespace MyProgram
{
    public class MyClass
    {
        public static void Main()
        {
            MyNamespace.Nested.SampleClass.myMethod();
        }
    }
}

Вывод:

Пример вложенного пространства имен
codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©