TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.78K subscribers
Post #1208 1.36K
День девятьсот восемьдесят четвёртый. #ЗаметкиНаПолях
Фигурные Скобки и Область Видимости Переменных
Даже если вы опытный разработчик C#, есть функции, о которых вы могли не знать. Например, в C# вы можете объявлять переменные в блоках кода в фигурных скобках для определения методов, условных операторов, циклов и т.п. Например, фигурные скобки определяют область видимости переменной в методе:
static void Main(string[] args)
{
var name = Console.ReadLine();
…
}

Также вы можете определить область видимости внутри оператора if:
if (…)
{
var dayOfWeek = DateTime.Today.ToString("dddd");
…
}
… или while:
while (…)
{
var dayOfWeek = DateTime.Today.ToString("dddd");
…
}

Независимо от контекста фигурные скобки ограничивают область действия переменной. Знаете ли вы, что с помощью фигурных скобок можно определить область видимости переменной даже без специального оператора?
static void Main(string[] args)
{
Console.WriteLine("Hello");
{
var theVar = "World";
Console.WriteLine(theVar);
}
}
Здесь у нас есть блок кода, выделенный фигурными скобками внутри метода Main(). Блок кода определяет и инициализирует переменную theVar и выводит её значение в консоль. Обратите внимание, что нет if, while, for или другого оператора перед фигурными скобками.

Что произойдет, если мы добавим следующий оператор вне блока, как в следующем примере?
static void Main(string[] args)
{
Console.WriteLine("Hello");
{
var theVar = "World";
Console.WriteLine(theVar);
}

//оператор вне блока
Console.WriteLine(theVar);
}

Если вы попытаетесь запустить эту программу, вы получите следующую ошибку:
CS0103: The name 'theVar' does not exist in the current context
(Имя 'theVar' не существует в текущем контексте)

Как видите, переменная, определённая внутри блока кода, недоступна вне его.

Другими словами, вы можете создать область видимости переменной, просто используя фигурные скобки в любом месте вашего кода. Эта функция может быть полезна, когда у вас есть короткая последовательность операторов, которым необходимо передать значение через переменную. Вы создаёте блок кода на лету, объявляете переменную и используете её. Однако предлагаю не злоупотреблять этим. Иногда лучше создать метод и вызвать его. Это может быть более читабельным, чем безымянный блок кода.

Источник: https://auth0.com/blog/five-csharp-features-you-dont-know/
More from @netdeveloperdiary
  1. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  2. Oct 15, 2026Post #3374
  3. Oct 14, 2026Post #3373
  4. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  5. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  6. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →