#ЗаметкиНаПолях
Фигурные Скобки и Область Видимости Переменных
Даже если вы опытный разработчик 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' не существует в текущем контексте)
Как видите, переменная, определённая внутри блока кода, недоступна вне его.
Другими словами, вы можете создать область видимости переменной, просто используя фигурные скобки в любом месте вашего кода. Эта функция может быть полезна, когда у вас есть короткая последовательность операторов, которым необходимо передать значение через переменную. Вы создаёте блок кода на лету, объявляете переменную и используете её. Однако предлагаю не злоупотреблять этим. Иногда лучше создать метод и вызвать его. Это может быть более читабельным, чем безымянный блок кода.