Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csPmScSnB 183 of 436 menu
◀ ▶

Одинаковые имена в разных блоках в C#

Два соседних блока не делят одну область. В каждом можно объявить свою переменную num:

{ int num = 1; Console.WriteLine(num); // prints 1 } { int num = 2; Console.WriteLine(num); // prints 2 }

То же имя в разных ветках одного if тоже допустимо, потому что ветки не выполняются одновременно и их области не пересекаются:

bool test = true; if (test) { int num = 1; Console.WriteLine(num); // prints 1 } else { int num = 2; Console.WriteLine(num); // prints 2 }

Если внешний блок уже объявил num, повторное объявление во вложенном блоке в C# запрещено:

int num = 1; if (true) { int num = 2; // error }

Чтобы изменить внешнее значение, используют присваивание без нового объявления:

int num = 1; if (true) { num = 2; } Console.WriteLine(num); // prints 2

Определите, соберется ли программа:

for (int i = 0; i < 2; i++) { int val = i; } for (int i = 0; i < 3; i++) { int val = i; }

Определите, соберется ли программа:

int val = 0; for (int i = 0; i < 3; i++) { int val = i; }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить