Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
using MyShapes;
using My3DShapes;
// Устранить неоднозначность, используя специальный псевдоним.
using The3DHexagon = My3DShapes.Hexagon;
// На самом деле здесь создается экземпляр класса My3DShapes.Hexagon.
The3DHexagon h2 = new The3DHexagon();
...
Продемонстрированный альтернативный синтаксис
using
System.Runtime.Serialization.Formatters.Binary
BinaryFormatter
BinaryFormatter
using bfHome = System.Runtime.Serialization.Formatters.Binary;
bfHome.BinaryFormatter b = new bfHome.BinaryFormatter();
...
либо с использованием традиционной директивы
using
using System.Runtime.Serialization.Formatters.Binary;
BinaryFormatter b = new BinaryFormatter();
...
На данном этапе не нужно беспокоиться о предназначении класса
BinaryFormatter
using
На заметку! Имейте в виду, что чрезмерное применение псевдонимов C# в результате может привести к получению запутанной кодовой базы. Если другие программисты в команде не знают о ваших специальных псевдонимах, то они могут полагать, что псевдонимы ссылаются на типы из библиотек базовых классов, и прийти в замешательство, не обнаружив их описания в документации.
Создание вложенных пространств имен
При организации типов допускается определять пространства имен внутри других пространств имен. В библиотеках базовых классов подобное встречается во многих местах и обеспечивает размещение типов на более глубоких уровнях. Например, пространство имен
IO
System
System.IO
Шаблоны проектов .NET Core помещают начальный код в файле
Program.cs
CustomNamespaces
namespace <b>CustomNamespaces</b>
{
class Program
{
...
}
}
На заметку! В случае замены комбинации
Program/Main()
Вложить пространства имен
MyShapes
My3DShapes
namespace
<b>namespace CustomNamespaces</b>
{
<b> namespace MyShapes</b>
{
// Класс Circle
public class Circle
{
/* Интересные методы... */
}
}
}
Второй (и более распространенный) способ предусматривает использование "точечной записи" в определении пространства имен, как показано ниже:
namespace <b>CustomNamespaces.MyShapes</b>
{
// Класс Circle
public class Circle
{
/* Интересные методы... */
}
}
Пространства имен не обязаны содержать какие-то типы непосредственно, что позволяет применять их для обеспечения дополнительного уровня области действия.
Учитывая, что теперь пространство
My3DShapes
CustomNamespaces
using
using The3DHexagon = CustomNamespaces.My3DShapes.Hexagon;
using CustomNamespaces.MyShapes;
На заметку! На практике принято группировать файлы в пространстве имен по каталогам. Вообще говоря, расположение файла в рамках структуры каталогов никак не влияет на пространства имен. Однако такой подход делает структуру пространств имен более ясной (и конкретной) для других разработчиков. По этой причине многие разработчики и инструменты анализа кода ожидают соответствия пространств имен структуре каталогов.
Изменение стандартного пространства имен в Visual Studio
Как упоминалось ранее, при создании нового проекта C# с использованием Visual Studio (либо интерфейса .NET Core CLI) название корневого пространства имен приложения будет совпадать с именем проекта. Когда затем в Visual Studio к проекту добавляются новые файлы кода с применением пункта меню Project►Add New Item (Проекта►Добавить новый элемент), типы будут автоматически помещаться внутрь корневого пространства имен. Если вы хотите изменить название корневого пространства имен, тогда откройте окно свойств проекта, перейдите в нем на вкладку Application (Приложение) и введите желаемое имя в поле Default namespace (Стандартное пространство имен), как показано на рис. 16.1.