Самая необычная конструкция в C#, по моему мнению, это деректива #region. Удивительно в ней то, что введена она в язык исключительно ради более удобной работы с исходным кодом. Компилятор, говоря языком стандарта, не налагает никакой семантики на "содержимое" региона.
Служат регионы для возможности отделения блока кода внутри региона от остального кода по-соседству.
Используютя регионы, зачастую, именно так, как показано в примере из MSDN:
#region MyClass definition
public class MyClass
{
public static void Main()
{
}
}
#endregion
то есть начинаются как:
а заканчиваются:
чему во многом этому способствует "стандартный" сниппет (находящийся в "Program Files\Microsoft Visual Studio 9.0\VC#\Snippets\1033\Visual C#\pp_region.snippet"), позволяющий в несколько нажатий клавиш вставить в редактор блок #region … #endregion и ввести лишь "заголовок".
Директива #endregion, кажется, нужна лишь для того, что бы обозначить окончание региона и больше проку от неё нет. Но … это только на первый взгляд :о) она так же, как и #region может содержать информативное текстовое описание, а, значит, подсказывать, что же за код находится выше неё в редакторе и, часто, это очень полезно если "размер" региона больше одного экрана или просто не хочется высоко поднимать глаза, что бы увидеть, что же написано в заголовке региона. Главное, получить это можно практически бесплатно, если для вставки регионов вы пользуетесь code-snippets. Достаточно открыть в редакторе (хоть в той же MSVS) указанный выше файл pp_region.snippet и заменить
<![CDATA[#region $name$
$selected$$end$
#endregion
]]>
</Code>
на
<![CDATA[#region $name$
$selected$$end$
#endregion $name$
]]>
</Code>
Теперь у вас будут более информативные и даже более стройные регионы:
#region MyClass definition
public class MyClass
{
public static void Main()
{
}
}
#endregion MyClass definition
Не забывайте: человек может читать или просто просматривать код не только "сверху вниз", но и "снизу вверх", и в таком случае указанный у #endregion коментарий послужит на пользу.