Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 300 301 302 303 304 305 306 307 308 ... 642

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 (он исследуется в главе 20). Сейчас просто запомните, что ключевое слово using в C# позволяет создавать псевдонимы для очень длинных полностью заданных имен или, как случается более часто, для разрешения конфликтов имен, которые могут возникать при импорте пространств имен, определяющих типы с идентичными названиями.

На заметку! Имейте в виду, что чрезмерное применение псевдонимов C# в результате может привести к получению запутанной кодовой базы. Если другие программисты в команде не знают о ваших специальных псевдонимах, то они могут полагать, что псевдонимы ссылаются на типы из библиотек базовых классов, и прийти в замешательство, не обнаружив их описания в документации.

Создание вложенных пространств имен

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

Шаблоны проектов .NET Core помещают начальный код в файле Program.cs внутрь пространства имен, название которого совпадает с именем проекта. Такое базовое пространство имен называется корневым. В этом примере корневым пространством имен, созданным шаблоном .NET Core, является CustomNamespaces:

namespace <b>CustomNamespaces</b>

{

  class Program

  {

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  ...

  }

}

На заметку! В случае замены комбинации 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 к проекту добавляются новые файлы кода с применением пункта меню ProjectAdd New Item (Проекта►Добавить новый элемент), типы будут автоматически помещаться внутрь корневого пространства имен. Если вы хотите изменить название корневого пространства имен, тогда откройте окно свойств проекта, перейдите в нем на вкладку Application (Приложение) и введите желаемое имя в поле Default namespace (Стандартное пространство имен), как показано на рис. 16.1.

1 ... 300 301 302 303 304 305 306 307 308 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий