Jak wyrwać się z foreach
pętli w języku C #, jeśli jeden z elementów spełnia wymagania?
Na przykład:
foreach(string s in sList){
if(s.equals("ok")){
//jump foreach loop and return true
}
//no item equals to "ok" then return false
}
return "ok" in sList:
- czy nie ma czegoś porównywalnego w C #?Odpowiedzi:
Alternatywnie, jeśli po znalezieniu przedmiotu musisz wykonać inne czynności:
źródło
bool found = callFunctionInFirstCodeSnipper(list); // do stuff
Użyj,
break;
a spowoduje to wyjście z pętli foreachźródło
Możesz uniknąć jawnych pętli, wybierając trasę LINQ:
źródło
Contains("ok")
.Contains
zakłada, że iterujesz po plikuICollection<T>
.Any
działałby na wszystkim, co jest tego typuIEnumerable<T>
, aw tym przypadku pytanie nie wskazuje wyraźnie, jakiego rodzaju kolekcji jest iterowane (List
chociaż jest całkiem niezłe).Powinien załatwić sprawę. Instrukcja break po prostu zakończy wykonywanie pętli, podczas gdy instrukcja return oczywiście zakończy całą funkcję. Sądząc po twoim pytaniu, możesz użyć zwrotu prawda; komunikat.
źródło
Możesz użyć tego,
break
który wyskakuje z najbliższej otaczającej pętli lub możesz po prostu bezpośrednioreturn true
źródło
Użyj instrukcji „break”. Uważam za zabawne, że odpowiedź na twoje pytanie jest dosłownie w twoim pytaniu! Nawiasem mówiąc, proste wyszukiwanie w Google mogło dać ci odpowiedź.
źródło
Co powiesz na:
To powinno załatwić sprawę, jeśli wszystko, co chcesz zrobić, to sprawdzić, czy odpowiedź jest „OK” i zwrócić odpowiedź ...
źródło
To nie jest bezpośrednia odpowiedź na twoje pytanie, ale jest o wiele łatwiejszy sposób na zrobienie tego, co chcesz. Przynajmniej jeśli używasz .NET 3.5 lub nowszego. Nazywa się Enumerable.Contains
źródło
źródło
Albo wróć prosto z pętli:
Lub użyj
break
:Jednak w twoim przypadku może być lepiej zrobić coś takiego:
źródło
źródło
$
nie jest prawidłowa składnia C #.var
jest całkowicie poprawnym słowem kluczowym C #, więc jesteś dobry