Приветствую всех, сегодня поговорим о двух маленьких но очень важных темах. Разберемся в начале что такое пространство имен в .net
Пространства имен (namespace) — это способ, благодаря которому .NET избегает конфликтов имен между классами.
System.Console.WriteLine("nookery.ru");
//В данном примере пространство имен System.
Свойства пространства имен:
- Организация крупных проектов по созданию кода.
- Для их разделения используют оператор . (точка).
- Директива using исключает требование на указание имени пространства имен для каждого класса, избавляя от необходимости полной квалификации имен стереотипов.
- Пространство имен global является корневым пространством имен:
global::System всегда будет ссылаться на пространство имен платформы
.NET Framework System
using
Директива using — импортирует пространство имен, избавляя от необходимости полной квалификации имен стереотипов.
Использовав using System; Нам больше не нужно вводить полный путь, таким образом мы можем вызывать методы быстрее и короче.
Console.WriteLine("nookery.ru");
Директива using позволяет создавать псевдонимы пространства имен или типа. Это называется директива using alias
using My=System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
My.Console.WriteLine("nookery.ru");
My.Console.ReadKey();
}
}
}
Директива using alias не может иметь открытый универсальный тип с правой части. Например, невозможно создать using alias для List<T>, но можно создать для List<int>.
В случае отсутствия импорта пространства имен System, полные имена базовых типов будут недоступными.
//using System;
namespace ConsoleApp20
{
class Program
{
static void Main(string[] args)
{
Int32 a = 0; //не доступно
int a= 32; //доступно
}
}
}
Как подключить алиас?
Для подключения алиаса выполните следующие действия:
• Добавьте в References необходимые сборки.
• Откройте папку References.
• Правой кнопкой мыши кликните по сборке, откроется контекстное
меню, в котором выберите пункт Properties.
• В открывшемся окне свойств, в свойстве Aliases, замените значение
global на свое название

Директивы препроцессора C#:
С помощью директив препроцессора любой раздел кода С# можно компилировать условно. Директивы препроцессора — это специальные инструкции для компилятора,
которые начинаются с символа # (и, в отличие от других конструкций С#, должны полностью располагаться в одной строке). Логически они выполняются перед основной компиляцией.
Директива #region позволяет указать блок кода, который можно разворачивать и сворачивать с помощью функции структурирования в редакторе кода Visual Studio.

Это очень удобно, когда идет работа над большим файлом где много строк кода, позволяет лучше сконцентрироваться над тем участком кода, над которым идет работа.
Директива #if #endif
При обнаружении компилятором C# директивы #if , за которой далее следует директива #endif , компиляция кода между двумя директивами выполняется только в том случае, если определен указанный символ.
using System;
namespace ConsoleApp20
{
class Program
{
static void Main(string[] args)
{
#if true //false
Console.WriteLine("nookery.ru 1");
#endif
Console.WriteLine("nookery.ru 2");
Console.ReadKey();
//nookery.ru 1
//nookery.ru 2
}
}
}
Оператор #if , вместе с операторами # else, #elif, #endif, #define и #undef , позволяет включать или исключать код на основе существования одного или нескольких символов.
#define MYTEST
using System;
public class MyClass
{
static void Main()
{
#if (DEBUG && !MYTEST)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
Console.WriteLine("DEBUG and MYTEST are defined");
#else
Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
}
}
Это особенно полезно при компиляции кода для построения отладки или при компиляции для определенной конфигурации.
#warning позволяет создать предупреждение первого уровня из определенного места в коде. Пример:

Это очень удобно, таким образом в большом коде можно легко найти место где ведется работа, либо пометки созданные разработчиком.
#error позволяет создать ошибку из определенного места в коде. Пример:

Таким образом можно легко найти искусственно созданную ошибку в случаи необходимости, а так же запрету сборки проекта.
Директива #line позволяет изменять номер строки компилятора и при необходимости имя файла, в который будут выводиться ошибки и предупреждения. В этом примере показано, как включить в отчет два предупреждения, связанные с номерами строк.

С помощью директивы #line мы смогли переместить вызов ошибки со строки 12 на строку 5. Так же с помощью этой директивы мы можем обходить участки кода при отладке, для этого надо написать:
static void Main(string[] args)
{
Console.WriteLine("Normal line #1."); // Set break point here.
#line hidden
Console.WriteLine("Hidden line.");
#line default
Console.WriteLine("Normal line #2.");
}
