Я вот прочитал про #region и #endregion что они нужны для группировки членов классов, но более подробно не нашел. Хочу понять более подробно.
Директива #region позволяет указать блок кода, который можно
разворачивать и сворачивать с помощью функции структурирования в
редакторе кода Visual Studio. В больших файлах кода очень удобно
сворачивать или скрывать одну или несколько областей, чтобы не
отвлекать внимание от той части файла, над которой в настоящее время
идет работа.
Пример
#region MyClass definition
public class MyClass
{
static void Main()
{
}
}
#endregion
Источник
Представьте, что у вас есть класс, который наследует несколько интерфейсов.
Вы реализуете все необходимые методы, при этом группируете их при помощи регионов.
Вот это, пожалуй, самый типовой кейс, который подразумевается, когда говорят о группировке при помощи регионов.
Второй типовой пример -- сокрытие в регионах вложенных классов.
public class MyClass : IFoo, IBar
{
# region [ IFoo implementation ]
public void Foo1()
{
throw new System.NotImplementedException();
}
public void Foo2()
{
throw new System.NotImplementedException();
}
public void Foo3()
{
throw new System.NotImplementedException();
}
#endregion
#region [ IBar implementation]
public int Bar1()
{
throw new System.NotImplementedException();
}
public string Bar2()
{
throw new System.NotImplementedException();
}
#endregion
}
public interface IFoo
{
void Foo1();
void Foo2();
void Foo3();
}
public interface IBar
{
int Bar1();
string Bar2();
}
Я часто использую #region, чтобы спрятать большие куски boilerplate-кода. Хороший пример — реализация dependency property в WPF. Такое множество кода:
#region dependency property FieldValue Value
public FieldValue Value
{
get { return (FieldValue)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(FieldValue), typeof(SingleField));
#endregion
на самом деле совершенно избыточно, поэтому имеет смысл свернуть его, чтобы не тратить на него время, и видеть лишь
[dependency property FieldValue Value]
Сборка персонального компьютера от Artline: умный выбор для современных пользователей