субота, 6 лютого 2010 р.

Пространство имен (англ. namespace)

Пространство имён (от англ. namespace) – некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировки уникальных идентификаторов (т.е. имён). Идентификатор, определенный в пространстве имён, ассоциируется с этим пространством. Один и тот же идентификатор может быть независимо определён в нескольких пространствах. Таким образом, значение, связанное с идентификатором, определённым в одном пространстве имён, может иметь (или не иметь) такое же (а скорее, другое) значение, как и такой же идентификатор, определённый в другом пространстве. Языки с поддержкой пространств имён определяют правила, указывающие, к какому пространству имён принадлежит идентификатор (т.е. его определение).

Например, Андрей работает в компании X, а ID (сокр. от англ. идентификатор) его как работника равен 123. Олег работает в компании Y, а его ID также равен 123. Единственное (с точки зрения некоей системы учета), благодаря чему Андрей и Олег могут быть различимы при совпадающих ID, это их принадлежность к разным компаниям. Различие компаний в этом случае представляет собой систему различных пространств имён (одна компания – одно пространство). Наличие двух работников в компании с одинаковыми ID представляет большие проблемы при их использовании, например, по платёжному чеку, в котором будет указан работник с ID 123, будет весьма затруднительно определить работника, которому этот чек предназначается.

Объявление пространства имен имеет следующее формальное описание:

namespace name[.name1] ...] {
    // объявляемые_данные
}

Пространство имен указывается идентификатором, который может содержать операцию . (точка), определяющую составное имя пространства имен.

Объявляемыми данными пространства имен могут быть:

  • другие пространства имен;
  • классы;
  • интерфейсы;
  • структуры;
  • перечисления.

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

  • имя соответствующей переменной или метода должно быть квалифицировано названием пространства имен (пространство имен указывается перед именем через точку).
    System.Console.WriteLine(“Печать строки”);
    
  • имя библиотеки должно быть установлено как доступное оператором using.
    using System;
    

Директива using может использоваться для:

  • подключения пространства имен. Класс не может быть подключен директивой using;
  • создания псевдонима имени класса. Псевдоним используется в программе для квалификации членов данного класса.

Объявление псевдонима имеет следующее формальное описание:

using alias=class_name;

Например:

using System.Console = my_SN;
    class MyClass {
        public static void Main() { 
            my_SN.WriteLine("123");
        }
    }

Директива using позволяет не квалифицировать каждую переменную пространством имен, а просто подключить требуемое пространство имен.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments