Дополнительно
Может 'и#39; петли внутри 'и#39; петли использовать то же имя переменной счетчика?
Могу ли я использовать один и тот же счетчик переменной в цикл for
В для
петли?
Или переменные влияют друг на друга? Если следующий код использовать другую переменную для второго цикла, таких как "J", или " я " нормально?
for(int i = 0; i < 10; i++)
{
for(int i = 0; i < 10; i++)
{
}
}
104
12
Вы можете использовать то же имя (идентификатор). Это будет другой объект. Они не влияют друг на друга. Внутри внутреннего цикла, нет никакого способа, чтобы ссылаться на объект, используемый во внешнем цикле (если не принимать специальные меры для этого, предоставляя ссылку на него).
Это вообще плохой стиль, склонен к путанице, и его следует избегать.
Объекты разные, только если внутренний определяется отдельно, как с инт я вам показал. Если же имя используется без определения нового объекта, петель будет использовать один и тот же объект и будут мешать друг другу.
Во-первых, это абсолютно законно: код будет компилироваться и выполняться, повторяя тело вложенного цикла 10×10=100 раз. Счетчик цикла
я
внутри вложенного цикла будет скрыть счетчик внешнего цикла, так что два счетчика будет увеличиваться независимо друг от друга.Поскольку наружное " я "скрыто, код внутри вложенного цикла's тело будет иметь доступ только к значению" я "из вложенного цикла, а не" я " от внешнего цикла. В ситуациях, когда вложенный цикл не нужен доступ к внешнему "я", такой код может быть вполне оправданным. Однако, это может создавать большую путаницу в своих читателей, так что's не хорошая идея, чтобы не писать такой код, чтобы избежать "по обслуживанию обязательств.&и"
Примечание: даже если счетчик переменных обе петли имеют тот же идентификатор "я", они остаются двумя независимыми переменными, т. е. вы не использование одной и той же переменной в обоих циклах. С помощью той же переменной в обе петли тоже можно, но код будет трудно читать. Вот пример:
Теперь обе петли использовать ту же переменную. Однако, это займет некоторое время, чтобы выяснить, что этот код без компиляции (демо);
Вы можете. Но вы должны знать сферу "я". если мы называем внешнее
я
сi_1
и внутреннегоя
сi_2
сфера `Я ' выглядит следующим образом:Вы должны заметить, что они не влияют друг на друга, и только их области определения разные.
Это вполне возможно, но имейте в виду, что вы не сможете решить первый заявил Я
во второй цикл второй цикл ребенка
если вам нужно настроить или получить значение из первых, используйте J во втором контуре
а если ваши творческие достаточно, вы можете сделать их обоих в одной петле
Да, вы можете использовать то же имя переменной счетчика на внутренний цикл
for
внешнийдля
петли.От цикл for:
Область применения loop_statement составляет вложенные в пределах init_clause.
Из Стандартов C#6.8.5p5 итераторы [выделено мной]
Из Стандартов C#6.2.1p4 области идентификаторов [выделено мной]
Из кода / точки зрения компилятора это будет вполне действительным и легальным, что нужно сделать. В
int я декларированные в Внутренней для(тип int я = 0; я &Л; 10; я++)
петля в новый и меньший масштаб, так что декларацию тени декларация оint я
во внешнем цикле (или, другими словами, во внутреннем объеме все обращения к переменнойi
идти кint я
, объявленные во внутренней области видимости, оставивint я
во внешней области нетронутым).Тем не менее, с качеством кода точки зрения, это совершенно ужасно. Трудно читать, трудно понять и легко понять. Дон'т сделать это.
Да, безусловно, вы можете использовать то же имя переменной.
Переменные Программирование C может быть объявлено в трех местах: локальные переменные:-внутри функции или блока. Глобальные переменные:-из всех функций. Формальные параметры:-в параметры функции.
Но в вашем случае я рамки должны учитывать следующие вещи
Примечание:это будет лучшая практика, чтобы использовать разные переменные для внутренних и наружных контуров
Да, вы можете использовать его, но это'ы довольно запутанным. Самое главное-это объем локальной переменной внутри цикла. Как далеко, если переменная объявлена внутри функции, сфера применения этой переменной этой функции.
Точно так же обстоит дело с петлями, переменная, объявленная внутри внутреннего цикла имеют разный объем и переменная, объявленная вне цикла имеет разные масштабы.
Лучшим подходом является использование различных переменных для внутренней и внешней петли.
Да - и еще более интересно, что вы можете повторно использовать имя переменной каждый раз, когда вы открываете набор брекетов. Это часто удобно при установке диагностического кода. Тип открытая скобка '{' затем объявление и использование переменных, затем закройте скобки и переменные уйти. Это гарантирует, что вам не будут мешать ни с чем в основном корпусе, сохраняя преимущество переменные, классы и методы, объявленные вне скобок.
Правила: переменная, объявленная в инструкции может быть использован только в этом заявлении и в теле цикла.
Если в коде определено несколько экземпляров я во внутренних циклах каждый экземпляр займет свое собственное пространство памяти. Так что нечего так волноваться о результатах, было бы то же самое.
Но не рекомендуется использовать то же имя переменной, так как это трудно понять и это будет не ремонтопригодно в дальнейшем.
Важной частью является то, что внутренний параметр loop содержит
инт я
. Потому чтоя
переопределяется таким образом, эти две переменные не влияют друг на друга; их объемы разные. Вот два примера, чтобы показать это:Обратите внимание, что в приведенном выше коде типа
int i
в внутренний параметр Loop, и код ниже только включает в себя "я".Ну, вы можете сделать это без скриптов, имеющих проблемы, но вы должны избегать этой структуры. Обычно это приводит к путанице