Псевдонимы для пространств имён в языке си шарп

Wise

Green Team
19.01.2018
32
11
BIT
0
В языке c# ключевое слово using может иметь несколько функций, одна из которых, позволяет создавать псевдонимы.

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

У всех во дворе или в школе были прозвища, например, возьмём вымышленного персонажа Артёма Волкова, прозвище в школе — «Волк». Но, не смотря на то, что многие его называют «Волк», все знают, о ком на самом деле идёт речь. То есть слово «Волк» было своего рода псевдонимом для Артёма Волкова. В языке си шарп мы можем создавать точно такие же псевдонимы.

Синтаксис

using имя псевдонима = пространство имён;

Так же через точку можно указать несколько пространств имён

using имя псевдонима = пространство имён.пространство имён;

Либо можно указать любое количество классов и других членов.
Например, создадим псевдоним cool для пространства имён System и класса
Console.

using cool = System.Console;

Пример использования псевдонима:

rabota-s-jelementom-upravlenija-treeview-v-jazyke_4.png


Теперь для того, чтобы вывести любое слово на консоль, мы можем применить два способа: стандартный System.Console.WriteLine и новый с использованием псевдонима cool, результат будет одинаковым.

atributy-xml-fajla_7.png


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

Так же псевдонимы можно применять и в таких ситуациях:

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

Есть два пространства имён: Auto и Old_Auto, оба они содержат одинаковый тип (класс) по имени Car, при этом это нормальная ситуация, которая будет очень часто встречаться на практике.

atributy-xml-fajla_13.png


В ходе написания нашей программы возникла необходимость получить текущую скорость обоих классов Car. Чтобы избавить себя от лишней писанины указываем с помощью ключевое слово using оба пространства имен: Auto и Old_Auto, и начинаем создавать объекты класса Car. Но, возникает ошибка, компилятор не понимает, какой Car мы хотим использовать, ведь их у нас два! И мы получаем ошибку:«Ambiguous name — choose from the following».

kak-dobavit-xml-fajl-v-solution-explorer_1.png


Как видно в данном случае using не помогает, а наоборот вводит в заблуждение. Поэтому в таком случае мы должны сначала указать нужный нам namespace, а затем имя класса Car, то есть для того, чтобы вызвать метод CurrentSpeed нам нужно указать полное имя. На подсказке, которая появилась во время ошибки, об этом нам как бы намекают, мол, укажите явно: Old_Auto.Car или Auto.Car

atributy-xml-fajla_8.png


результат

zapolnenie-treeview-dannymi-iz-xml-fajla_1.png


В принципе решение нашли, но так же можно было бы воспользоваться и псевдонимами.

kak-dobavit-xml-fajl-v-solution-explorer_2.png


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

Псевдонимы удобная вещь, но применяются на практике не слишком часто, так как могут запутать код. В любом случаи теперь Вы знаете, что есть псевдонимы и знаете, как их можно применять на практике. Возможно, они Вам когда-нибудь пригодятся.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!