В Visual Studio 2008 я получаю следующую ошибку:
Error 1 A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'child' scope to denote something else
Это мой код:
for (int i = 0; i < 3; i++)
{
string str = "";
}
int i = 0; // scope error
string str = ""; // no scope error
Я понимаю, что str
перестает существовать после завершения цикла, но я также думал, что область действия i
также была ограничена циклом for
.
Значит, i
имеет ту же область видимости, что и переменная, объявленная сразу за пределами цикла for
?
Изменить:
Для ясности, я использую C #. Я обсуждаю удаление тега "C". Однако, поскольку правильный ответ объясняет разницу между ними, я считаю, что имеет смысл оставить оба тега.
У меня была ошибка в приведенном выше комментарии к коду:
for (int i = 0; i < 3; i++)
{
string str = "";
}
int i = 0; // scope error
string str = ""; // also scope error,
// because it's equivalent to declaring
// string str =""; before the for loop (see below)
c#
, так иc
(илиc++
), ЕСЛИ вы начали с , я получаю следующую ошибку в C # 3.0 (Visual Studio 2008) ... и более поздних версиях. Чем правила C # для области видимости цикла отличаются от ANSI C?, что, похоже, именно то, что вы планировали. Но вы не указали нигде в исходном вопросе, какой язык вы использовали, и в этом случае большинство людей смотрят на теги ... вот где возникает проблема с двумя языковыми тегами. - person Ben Voigt   schedule 07.08.2010