Зачем нужны пространства имён (namespace) в языке c#

Пространства имён (namespace)

Одним из основных компонентов платформы .NET Framework является — библиотека классов платформы сокращено (FCL), которая содержит огромное количество разных типов. Чтобы не было путаницы с именами типов и чтобы можно было бы их хоть как-то структурировать, было введено такое понятие, как namespace или пространство имён.

Давайте более подробно рассмотрим, что такое пространство имён, как оно обозначается в коде и как вообще с ним работать.

На данный момент существует очень большое количество пространств имен. В коде их обозначают ключевым словом – namespace, вот некоторые из них:

пространство имён

  1. System.IO
  2. Операции файлового ввода-вывода. Часто применяется, если вы работает к примеру, с файлами, что-то записываете в них, или считываете.

  3. System.Xml
  4. Работа с XML

  5. System.Data
  6. Работа с базами данных

  7. System.Linq
  8. язык LINQ

Структура сборки

Любая библиотека .NET представлена в виде файла сборки (assembly), которая может содержать внутри себя любое количество пространств имён, которые в свою очередь содержат любое количество типов (классы, структуры и так далее), а типы в свою очередь могут содержать любое количество членов (поля, методы, свойства и так далее).

В результате получается вот такая матрёшка.

структура сборки (assembly)

Для примера можно рассмотреть и реальный файл сборки System.XML, который содержит два пространства имён: System.XML.Schema и System.XML.Xpath (члены описывать не стал, думаю и так будет понятно).

состав

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

Пространство имён.Тип.Член

Рассмотрим рисунок ниже

пример

Для того чтобы обратиться к методу “Ремонт” сначала нужно указать: пространство имён “Гараж”, затем тип (класс) “Авто” и лишь только потом указываем имя метода.

Гараж.Авто.Ремонт

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

Так же стоит знать, что пространства имён могут быть вложенными друг в друга.

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

Рассмотрим пример последовательности доступа к нужному нам методу, при использовании вложенных пространств имён:

картинка 1

2

доступ к методу

В результате, на экран консоли будет выведено: Квартира 35.

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

Во время работы вам очень часто придется обращаться к типам или членам различных пространств имён и хорошо, если при этом они будут, выглядит вот так: System, System.IO, но бывают и такие System.Workflow.Runtime.DebugEngine вложенные пространства имён. И если, к примеру, вам потребуется обратиться к типам или членам пространства DebugEngine, то при кодировании каждый раз вам потребуется указывать всю цепочку пространств имён.

System.Workflow.Runtime.DebugEngine.DebugController.GetType();

Как видно это неудобно, да и выглядит громоздко, поэтому обычно в таких ситуациях используют ключевое слово using, которое имеет несколько вариантом применения. В данном случае оно позволяет вам указать один раз в самом начале файла, одно либо несколько пространств имён, например:

using System.Workflow.Runtime.DebugEngine;

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

using System.Workflow.Runtime.DebugEngine;
namespace Example
{
class Program
{
static void Main()
{
//не указываем пространство имён
DebugController.GetType();
}
}
}

На самом деле using можно применять, даже и в тех случаях, когда используются одиночные пространства имён.

4

5

6

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

class Program
{
static void Main()
{
//код
}
}

точно так же как и следующий код:

namespace MySpace
{
class Program
{
static void Main()
{
//код
}
}

Но, делать это не рекомендуется.

Читайте также:

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*