Вы спросили «почему» C # допускает блоки кода без предшествующих операторов.Вопрос «почему» также может быть истолкован как «какие будут возможные преимущества этой конструкции?»
Лично я использую блоки кода без операторов в C #, где читаемость значительно улучшена для других разработчиков, сохраняя при этомИмейте в виду, что блок кода ограничивает область действия локальных переменных.Например, рассмотрим следующий фрагмент кода, который намного легче читать благодаря дополнительным блокам кода:
OrgUnit world = new OrgUnit() { Name = "World" };
{
OrgUnit europe = new OrgUnit() { Name = "Europe" };
world.SubUnits.Add(europe);
{
OrgUnit germany = new OrgUnit() { Name = "Germany" };
europe.SubUnits.Add(germany);
//...etc.
}
}
//...commit structure to DB here
Я знаю, что это можно решить более элегантно, используя методы для каждого уровня структуры,Но опять же, имейте в виду, что такие вещи, как образцы данных, как правило, должны быть быстрыми.
Таким образом, даже несмотря на то, что приведенный выше код выполняется линейно, структура кода представляет собой структуру реальных объектов,тем самым облегчая другим разработчикам понимание, поддержку и расширение.