Я читаю книгу Джозефа Альбахари О'Рейли под названием «C#10 в двух словах». При описании локальных переменных в книге говорится следующее:
int x;
{
int y;
int x; // Error - x already defined
}
{
int y; // OK - y not in scope
}
Console.Write (y); // Error - y is out of scope
«Область действия переменной распространяется в обоих направлениях по всему ее блоку кода. Это означает, что если мы переместим исходное объявление x в этом примере в конец метода, мы получим ту же ошибку. В отличие от C++, это несколько странно, учитывая, что недопустимо ссылаться на переменную или константу до ее объявления». - Глава 2 C#10 в двух словах
Я попробовал использовать Может кто-нибудь объяснить, что это значит? Будем признательны за любую информацию о поведении этой области и ее последствиях!
🤔 А знаете ли вы, что...
С C# можно разрабатывать мобильные приложения для платформы Android с использованием Xamarin.
Пара { }
заключает в себе новую «область действия», блок, в котором действительна определенная переменная.
Оба y
объявлены в родственных областях. Они не будут мешать друг другу. Также они не будут доступны в родительской области — поэтому Console.WriteLine завершается с ошибкой.
Однако один x
определен в «родительской» области, а другой — в дочерней. Это дочернее объявление конфликтует с объявлением, объявленным в родительской области. И это будет даже в том случае, если вы переместите «родителя» int x
в конец блока, даже если тогда использовать его раньше будет недопустимо.
{
int x; // Error - x already defined
}
int x;