0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Директива - это…</a></li>
1
<ul><li><a>Директива - это…</a></li>
2
<li><a>Пространства имен - что это</a><ul><li><a>Свойства</a></li>
2
<li><a>Пространства имен - что это</a><ul><li><a>Свойства</a></li>
3
</ul></li>
3
</ul></li>
4
<li><a>Using - описание</a><ul><li><a>Особенности</a></li>
4
<li><a>Using - описание</a><ul><li><a>Особенности</a></li>
5
<li><a>Псевдонимы</a></li>
5
<li><a>Псевдонимы</a></li>
6
</ul></li>
6
</ul></li>
7
<li><a>Наглядный пример</a></li>
7
<li><a>Наглядный пример</a></li>
8
<li><a>Как лучше освоить</a></li>
8
<li><a>Как лучше освоить</a></li>
9
</ul><p>В данной статье будет рассказано о том, что собой представляет пространство имен в C#. Предстоит познакомиться с директивами типа using, а также рассмотреть наглядные примеры использования упомянутых компонентов.</p>
9
</ul><p>В данной статье будет рассказано о том, что собой представляет пространство имен в C#. Предстоит познакомиться с директивами типа using, а также рассмотреть наглядные примеры использования упомянутых компонентов.</p>
10
<h2>Директива - это…</h2>
10
<h2>Директива - это…</h2>
11
<p>Директива - это указание. Определение соответствующего понятия в программировании напоминает термин "команда". Он используется для описания некоторых конструкций ЯП. Указывает, как компилятор или любой иной транслятор должен обрабатывать вводимые данные.</p>
11
<p>Директива - это указание. Определение соответствующего понятия в программировании напоминает термин "команда". Он используется для описания некоторых конструкций ЯП. Указывает, как компилятор или любой иной транслятор должен обрабатывать вводимые данные.</p>
12
<p>Директивы не являются частью грамматики. Они могут меняться в зависимости от компилятора. Обрабатываются процессором для определения поведения компилятора, а также функционируют в виде своеобразной функции внутренней параметризации.</p>
12
<p>Директивы не являются частью грамматики. Они могут меняться в зависимости от компилятора. Обрабатываются процессором для определения поведения компилятора, а также функционируют в виде своеобразной функции внутренней параметризации.</p>
13
<p>Иногда подобные компоненты отвечают за определение глобального поведения, а в некоторых ситуациях действуют локально. В программах на C не являются обязательными. Они могут быть проигнорированы компилятором. Чаще всего носят предписывающий характер. В самом языке директивы (using и не только) не отвечают за выполнение тех или иных действий ЯП - они лишь корректируют поведение компиляторов.</p>
13
<p>Иногда подобные компоненты отвечают за определение глобального поведения, а в некоторых ситуациях действуют локально. В программах на C не являются обязательными. Они могут быть проигнорированы компилятором. Чаще всего носят предписывающий характер. В самом языке директивы (using и не только) не отвечают за выполнение тех или иных действий ЯП - они лишь корректируют поведение компиляторов.</p>
14
<h2>Пространства имен - что это</h2>
14
<h2>Пространства имен - что это</h2>
15
<p>Пространства имен (namespace) - это то, что позволяет выделить определенные части приложений в логические блоки. Поддерживается работа с:</p>
15
<p>Пространства имен (namespace) - это то, что позволяет выделить определенные части приложений в логические блоки. Поддерживается работа с:</p>
16
<ul><li>классами;</li>
16
<ul><li>классами;</li>
17
<li>интерфейсами;</li>
17
<li>интерфейсами;</li>
18
<li>прочими элементами программного кода.</li>
18
<li>прочими элементами программного кода.</li>
19
</ul><p>Подобная концепция позволяет сделать исходный код более читабельным и понятным. Пространства имен применяются специально для организации классов. Помогают контролировать область применения методов в более крупных проектах.</p>
19
</ul><p>Подобная концепция позволяет сделать исходный код более читабельным и понятным. Пространства имен применяются специально для организации классов. Помогают контролировать область применения методов в более крупных проектах.</p>
20
<p>При помощи упомянутого элемента можно сохранить один набор имен (пример - имена классов) отличным от других наборов имен. Преимуществом такого подхода является то, что имена классов, объявленные в пределах одного пространства, не конфликтуют с аналогичными, но в других пространствах.</p>
20
<p>При помощи упомянутого элемента можно сохранить один набор имен (пример - имена классов) отличным от других наборов имен. Преимуществом такого подхода является то, что имена классов, объявленные в пределах одного пространства, не конфликтуют с аналогичными, но в других пространствах.</p>
21
<p>Членами могут выступать:</p>
21
<p>Членами могут выступать:</p>
22
<ul><li>пространства имен;</li>
22
<ul><li>пространства имен;</li>
23
<li>структуры;</li>
23
<li>структуры;</li>
24
<li>делегаты.</li>
24
<li>делегаты.</li>
25
</ul><p>Пространства имен можно охарактеризовать как группу классов, обладающих общими признаками.</p>
25
</ul><p>Пространства имен можно охарактеризовать как группу классов, обладающих общими признаками.</p>
26
<h3>Свойства</h3>
26
<h3>Свойства</h3>
27
<p>Перед тем как изучить директиву using, требуется запомнить следующие свойства именных пространств:</p>
27
<p>Перед тем как изучить директиву using, требуется запомнить следующие свойства именных пространств:</p>
28
<ul><li>организация масштабных проектов по созданию программных кодов;</li>
28
<ul><li>организация масштабных проектов по созданию программных кодов;</li>
29
<li>разделение происходит при помощи оператора "." (точки);</li>
29
<li>разделение происходит при помощи оператора "." (точки);</li>
30
<li>global - корневая область имен.</li>
30
<li>global - корневая область имен.</li>
31
</ul><p>Using - директива, которая позволяет исключить требование на указание названия области имен для каждого класса. Данный компонент избавляет от полной классификации "названий". Далее соответствующий элемент будет рассмотрен более подробно.</p>
31
</ul><p>Using - директива, которая позволяет исключить требование на указание названия области имен для каждого класса. Данный компонент избавляет от полной классификации "названий". Далее соответствующий элемент будет рассмотрен более подробно.</p>
32
<h2>Using - описание</h2>
32
<h2>Using - описание</h2>
33
<p>Директивы using - это то, что производит импорт именных областей, избавляя разработчика от полной классификации имен стереотипов. Дает возможность задействовать определенные типы без указания полной области "названий" соответствующего типа. В базовой форме used используется импорт всех типов именных пространств.</p>
33
<p>Директивы using - это то, что производит импорт именных областей, избавляя разработчика от полной классификации имен стереотипов. Дает возможность задействовать определенные типы без указания полной области "названий" соответствующего типа. В базовой форме used используется импорт всех типов именных пространств.</p>
34
<p>Using directive поддерживает применение двух модификаторов:</p>
34
<p>Using directive поддерживает применение двух модификаторов:</p>
35
<ol><li>Модификатор global. Он будет работать точно так, как и добавление одной директивы use к каждому исходному документу в пределах проекта. Первое появление состоялось в C Sharp 10 версии.</li>
35
<ol><li>Модификатор global. Он будет работать точно так, как и добавление одной директивы use к каждому исходному документу в пределах проекта. Первое появление состоялось в C Sharp 10 версии.</li>
36
<li>Модификатор static. Он производит импорт элементов static, а также вложенных типов из одного типа, а не из всех в пределах области "названий".</li>
36
<li>Модификатор static. Он производит импорт элементов static, а также вложенных типов из одного типа, а не из всех в пределах области "названий".</li>
37
</ol><p>Оба модификатора можно использовать вместе для импорта статистических членов из того или иного типа во всех исходных проектных файлах.</p>
37
</ol><p>Оба модификатора можно использовать вместе для импорта статистических членов из того или иного типа во всех исходных проектных файлах.</p>
38
<p>Сейчас C# поддерживает создание псевдонимов для namespace. Для этого используется директива псевдонимов using:</p>
38
<p>Сейчас C# поддерживает создание псевдонимов для namespace. Для этого используется директива псевдонимов using:</p>
39
<p>using Project = PC.MyCompany.Project;</p>
39
<p>using Project = PC.MyCompany.Project;</p>
40
<p>Модификатор global используется в using alias. Без него область будет ограничиваться файлом, в пределах которого находится директива.</p>
40
<p>Модификатор global используется в using alias. Без него область будет ограничиваться файлом, в пределах которого находится директива.</p>
41
<h3>Особенности</h3>
41
<h3>Особенности</h3>
42
<p>Директива using в C# имеет ряд особенностей. Она отображается в нескольких местах - все зависит от ситуации:</p>
42
<p>Директива using в C# имеет ряд особенностей. Она отображается в нескольких местах - все зависит от ситуации:</p>
43
<ol><li>Начало документа в исходном коде. Перед тем, как объявлять именные "области", а также типы.</li>
43
<ol><li>Начало документа в исходном коде. Перед тем, как объявлять именные "области", а также типы.</li>
44
<li>В любом namespace, но до пространственных имен, объявленных в первой "области". Здесь обязательно, чтобы не использовался модификатор global. Если он присутствует, директива using располагается перед всеми объявлениями.</li>
44
<li>В любом namespace, но до пространственных имен, объявленных в первой "области". Здесь обязательно, чтобы не использовался модификатор global. Если он присутствует, директива using располагается перед всеми объявлениями.</li>
45
</ol><p>Если не соблюдать данные принципы, при попытке обработки кода появится ошибка компиляции CS1529.</p>
45
</ol><p>Если не соблюдать данные принципы, при попытке обработки кода появится ошибка компиляции CS1529.</p>
46
<p>Директива using создается для того, чтобы использовать типы в пространстве имен без необходимости указания его самого. Если использовать using System, больше не придется вводить полный путь. Методы в приложении получится вызывать быстрее и короче.</p>
46
<p>Директива using создается для того, чтобы использовать типы в пространстве имен без необходимости указания его самого. Если использовать using System, больше не придется вводить полный путь. Методы в приложении получится вызывать быстрее и короче.</p>
47
<p>Using - это ключевое слово, которое в C# имеет широкое применение. Оно используется для создания операторов using. Данные элементы используются для грамотной обработки объектов IDisposable - шрифтов и файлов.</p>
47
<p>Using - это ключевое слово, которое в C# имеет широкое применение. Оно используется для создания операторов using. Данные элементы используются для грамотной обработки объектов IDisposable - шрифтов и файлов.</p>
48
<h3>Псевдонимы</h3>
48
<h3>Псевдонимы</h3>
49
<p>Using alias - это директива, позволяющая создавать псевдонимы для namespaces. У нее не может быть открытого универсального типа в правой части. Создать его для List<T> не получится, но можно для List<int>.</p>
49
<p>Using alias - это директива, позволяющая создавать псевдонимы для namespaces. У нее не может быть открытого универсального типа в правой части. Создать его для List<T> не получится, но можно для List<int>.</p>
50
<p>Если отсутствует импорт пространств имен System, полные имена базовых типов окажутся недоступными:</p>
50
<p>Если отсутствует импорт пространств имен System, полные имена базовых типов окажутся недоступными:</p>
51
<p>Для подключения using alias потребуется:</p>
51
<p>Для подключения using alias потребуется:</p>
52
<ol><li>Добавить в References желаемые сборки.</li>
52
<ol><li>Добавить в References желаемые сборки.</li>
53
<li>Открыть соответствующую папку и кликнуть по сборке правой кнопкой мышки.</li>
53
<li>Открыть соответствующую папку и кликнуть по сборке правой кнопкой мышки.</li>
54
<li>Выбрать раздел Properties.</li>
54
<li>Выбрать раздел Properties.</li>
55
<li>Нажать на свойство Aliases.</li>
55
<li>Нажать на свойство Aliases.</li>
56
</ol><p>После этого остается заменить значение global на свое собственное название.</p>
56
</ol><p>После этого остается заменить значение global на свое собственное название.</p>
57
<h2>Наглядный пример</h2>
57
<h2>Наглядный пример</h2>
58
<p>Для того, чтобы хорошо разбираться в директивах и их uses, стоит изучить наглядный пример. Ниже приведен фрагмент кода. Он будет взять за "базу" для изучения directive и оператора:</p>
58
<p>Для того, чтобы хорошо разбираться в директивах и их uses, стоит изучить наглядный пример. Ниже приведен фрагмент кода. Он будет взять за "базу" для изучения directive и оператора:</p>
59
<p>Здесь в операторе using в круглых скобках написано выражение, обработка которого приводит к получению специального объекта. Он будет реализовывать интерфейс System IDisposable. Если объект не реализует интерфейс, на экране появится сообщение об ошибке.</p>
59
<p>Здесь в операторе using в круглых скобках написано выражение, обработка которого приводит к получению специального объекта. Он будет реализовывать интерфейс System IDisposable. Если объект не реализует интерфейс, на экране появится сообщение об ошибке.</p>
60
<p>В приведенном фрагменте объект определяется за пределами оператора using. Соответствующий код может быть записан так:</p>
60
<p>В приведенном фрагменте объект определяется за пределами оператора using. Соответствующий код может быть записан так:</p>
61
<p>После обработки блока using в C происходит автоматический вызов метода Dispose(). Он осуществляется для переданного ранее объекта и располагается в интерфейсе System.IDisposable.</p>
61
<p>После обработки блока using в C происходит автоматический вызов метода Dispose(). Он осуществляется для переданного ранее объекта и располагается в интерфейсе System.IDisposable.</p>
62
<p>При использовании потоков необходимо запомнить - при завершении оперирования ими требуется завершать соответствующие процессы. Аналогичные принципы применяются к базам данных, сокетам, иным источникам. Метод Dispose() будет каждый раз завершать работу с потоком и высвобождать ресурсы.</p>
62
<p>При использовании потоков необходимо запомнить - при завершении оперирования ими требуется завершать соответствующие процессы. Аналогичные принципы применяются к базам данных, сокетам, иным источникам. Метод Dispose() будет каждый раз завершать работу с потоком и высвобождать ресурсы.</p>
63
<p>А вот более простой фрагмент программы:</p>
63
<p>А вот более простой фрагмент программы:</p>
64
<p>Здесь:</p>
64
<p>Здесь:</p>
65
<ol><li>Using namespace std указывает компилятору на импорт всех имен из пространства std в текущую область видимости. В приведенном примере таковым является main().</li>
65
<ol><li>Using namespace std указывает компилятору на импорт всех имен из пространства std в текущую область видимости. В приведенном примере таковым является main().</li>
66
<li>После использования неполного идентификатора count происходит преобразование в std::count.</li>
66
<li>После использования неполного идентификатора count происходит преобразование в std::count.</li>
67
</ol><p>Данный вариант подойдет для того, чтобы упрощать программный код. С ним не придется вручную прописывать и обновлять все неполные имена до полных.</p>
67
</ol><p>Данный вариант подойдет для того, чтобы упрощать программный код. С ним не придется вручную прописывать и обновлять все неполные имена до полных.</p>
68
<h2>Как лучше освоить</h2>
68
<h2>Как лучше освоить</h2>
69
<p>C# - язык, который пользуется спросом у разработчиков. Для того, чтобы хорошенько изучить его директивы, а также пространства имен и иные элементы, можно заняться самообразованием. Это не лучшее решение - обучение может затянуться, а доказать полученные навыки и знания документально окажется невозможно. Именно поэтому рекомендуется отдать предпочтение дистанционным онлайн курсам.</p>
69
<p>C# - язык, который пользуется спросом у разработчиков. Для того, чтобы хорошенько изучить его директивы, а также пространства имен и иные элементы, можно заняться самообразованием. Это не лучшее решение - обучение может затянуться, а доказать полученные навыки и знания документально окажется невозможно. Именно поэтому рекомендуется отдать предпочтение дистанционным онлайн курсам.</p>
70
<p>Они рассчитаны на широкую публику и прекрасно совмещаются со всеми делами - уроки можно просматривать в любое время. Курсы рассчитаны на срок до 12 месяцев. Пользователи получают шанс выбрать одновременно одно или несколько инновационных IT-направлений для изучения. Процесс сопровождается домашними заданиями и богатой практикой. В конце обучения выдается электронный сертификат, подтверждающий приобретенный спектр навыков и знаний.</p>
70
<p>Они рассчитаны на широкую публику и прекрасно совмещаются со всеми делами - уроки можно просматривать в любое время. Курсы рассчитаны на срок до 12 месяцев. Пользователи получают шанс выбрать одновременно одно или несколько инновационных IT-направлений для изучения. Процесс сопровождается домашними заданиями и богатой практикой. В конце обучения выдается электронный сертификат, подтверждающий приобретенный спектр навыков и знаний.</p>
71
<a></a><p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em></p>
71
<a></a><p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em></p>
72
72