Фигурные Скобки и Область Видимости Переменных
Даже если вы опытный разработчик C#, есть функции, о которых вы могли не знать. Например, в C# вы можете объявлять переменные в блоках кода в фигурных скобках для определения методов, условных операторов, циклов и т.п. Например, фигурные скобки определяют область видимости переменной в методе:
static void Main(string[] args)Также вы можете определить область видимости внутри оператора if:
{
var name = Console.ReadLine();
…
}
if (…)… или while:
{
var dayOfWeek = DateTime.Today.ToString("dddd");
…
}
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/