Почему переключение внутри цикла foreach выполняется только один раз

1

при отладке у меня есть условие, в котором Component.Attributes имеет Count = 3 (я имею в виду список из 3 элементов). И это внутри цикла foreach вот так:

foreach(Attributes atrb in Component.Attributes) 
{
    switch (Component.Type)
    {
        case "Combo":
            return validateCombo(atrb);
        case "List":
            return validateList(atrb);
        default:
            return true;
    }
}
return false;

Я заметил, что этот цикл foreach выполняется только для первого члена списка. Может кто-нибудь, пожалуйста, сообщите мне, почему он не выполнялся для других членов списка (я имею в виду счет 2 и 3)? Это связано с возвратом. Как его решить?

  • 2
    Пройдите этот код с помощью отладчика.
  • 1
    Потому что в каждом случае есть оператор возврата ...
Показать ещё 1 комментарий
Теги:
switch-statement
foreach

1 ответ

6
Лучший ответ

Return - это конец оператора функции. По достижении первого оператора return вся ваша функция завершается, поэтому цикл заканчивается немедленно.

Обычно вы хотите использовать оператор break между различными случаями коммутатора, чтобы остановить выполнение до конца определения коммутатора.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню