Почему этот код бритвы компилируется, хотя я повторно использую одно и то же имя переменной цикла в вложенной ForeachC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему этот код бритвы компилируется, хотя я повторно использую одно и то же имя переменной цикла в вложенной Foreach

Сообщение Anonymous »

Я пишу блазор компонент и заметил что -то неожиданное. В моем коде бритвы я использую FOREACH, чтобы зацикливаться на списке, а внутри обработчика событий Click of Radzenbutton я объявляю еще одну Foreach с тем же именем переменной цикла. Я думал, что это приведет к ошибке компилятора из -за дубликатной переменной в области объема, но код компилирует и работает нормально. < /P>

Код: Выделить всё

@foreach(var someItem in SomeStringList)
{
@someItem


}

@code {
public List SomeStringList = new() { "Item 1", "Item 2", "Item 3" };
public List SomeOtherStringList = new() { "Item A", "Item B", "Item C" };
}

Это компилируется и работает нормально.
Но я бы ожидал ошибку компилятора, потому что я переоборудовал переменную electiTem внутри вложенной фореаче , в то время как внешний некоторое количество все еще в области (и даже используется в лямбде для клика handler). />
Почему эта компиляция без конфликта? Seleyitem как во внешних, так и во внутренних петлях Foreach. Я ожидал, что компилятор будет жаловаться на конфликт имени, поскольку внешняя переменная все еще упоминается в выражении Lambda. Тем не менее, код, скомпилированный без какой -либо ошибки, и обе петли работают. Я хочу понять, почему C# допускает это и является ли это безопасно или просто затеняет переменную.

Подробнее здесь: https://stackoverflow.com/questions/797 ... iable-name
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»