Пространства имен
Обновлен: Ноябрь 2007
Пространства имен представляют собой способ организации различных типов, присутствующих в программах C#. Их можно сравнить с папкой в компьютерной файловой системе. Подобно папкам, пространства имен определяют для классов уникальные полные имена. Программа C# содержит одно или несколько пространств имен, каждое из которых либо определено программистом, либо определено как часть написанной ранее библиотеки классов.
Например, пространство имен System содержит класс Console, который включает методы для чтения и записи в окне консоли. В пространство имен System входит ряд других пространств, например System.IO и System.Collections. Только в платформе .NET Framework представлено более 80 пространств имен, в каждом из которых находятся тысячи классов, поскольку пространства имен используются для того, чтобы избежать путаницы с типами и методами, имеющими одинаковые имена.
При написании класса вне объявления пространства имен компилятор предоставит ему заданное по умолчанию пространство имен.
Ускоренные методы для пространства имен
Для использования метода WriteLine, определенного в классе Console, который содержится в пространстве имен System, следует использовать строку кода, как показано далее.
System.Console.WriteLine("Hello, World!");
Необходимость помнить, что всем методам, содержащимся в Console, должно предшествовать System быстро становится утомительной, поэтому в начало исходного файла C# целесообразно вставить директиву using, как показано далее.
using System;
Добавление using System; устанавливает, что предполагается пространство имен System и впоследствии можно написать следующее.
Console.WriteLine("Hello, World!");
Создание собственного пространства имен
Обычно пространства имен используются при работе с большими программами. Собственные пространства имен предоставляют определенный уровень контроля над методами и типами с одинаковыми именами. Например, предположим, что выполняется написание приложения, загружающего с диска статистические данные и файлы изображений. Можно создать два новых пространства имен, одно с именем Images, а другое — StatisticalData. Поскольку используются два отдельных пространства, все имена методов, определенные в каждом из них, будут уникальными, даже если отдельные классы имеют одинаковые имена. Это значит, что в обоих пространствах имен будет находиться класс с именем FileHandling и метод с именем Load. Для указания нужного класса можно обратиться к StatisticalData.FileHandling или Images.FileHandling.
Для каждого пространства имен в проекте Visual C# Express рекомендуется создать отдельную папку.
Пример
В следующем примере определяются два пространства имен, в каждом их которых содержится класс с именем FileHandling. Указав пространство имен, можно быстро отличить классы от методов.
namespace StatisticalData
{
class FileHandling
{
public void Load() {} // code to load statistical data
}
}
namespace Images
{
class FileHandling
{
public void Load() {} // code to load an image file
}
}
class Program
{
static void Main()
{
StatisticalData.FileHandling data = new StatisticalData.FileHandling();
data.Load();
Images.FileHandling image = new Images.FileHandling();
image.Load();
}
}