Мне было интересно, почему в С# использование имени переменной, используемого ранее в дочерней области, недопустимо. Вот так:
if (true)
{
int i = 1;
}
int i = 2;
Компиляция вышеуказанного кода вызывает ошибку:
Локальная переменная с именем 'i' не может быть объявлено в этой области, поскольку означало бы "i", который уже используется в "ребенке", область для обозначения чего-то еще
И все же вы не можете использовать переменную, определенную в области содержимого. В приведенном выше коде отлично работает Java, и я не вижу причин, почему он не работает на С#. Я уверен, что есть веская причина, но что это?