Engraçado. Em Python, você simplesmente faria return "ok" in sList:- não há algo comparável em c #?
Tim Pietzcker
8
@ Tim Pietzcker: Claro que sim, veja a resposta do gastador. De fato, depois de se acostumar com o Linq, muitos códigos imperativos parecem desenhos de cavernas.
R0MANARMY
Respostas:
220
foreach(string s in sList){if(s.equals("ok"))returntrue;}returnfalse;
Como alternativa, se você precisar fazer outras coisas depois de encontrar o item:
bool found =false;foreach(string s in sList){if(s.equals("ok")){
found =true;break;// get out of the loop}}// do stuffreturn found;
@ Graham Clark: Containsassume que você está repetindo uma ICollection<T>. Anyfuncionaria em qualquer coisa que fosse do tipo IEnumerable<T>e, nesse caso, a pergunta não indica explicitamente em que tipo de coleção está sendo repetida (a Listé um palpite bastante justo).
R0MANARMY
32
foreach(var item in listOfItems){if(condition_is_met)// Any processing you may need to complete here...break;// return true; also works if you're looking to// completely exit this function.}
Deve fazer o truque. A instrução break acabará a execução do loop, enquanto a instrução return obviamente encerrará toda a função. A julgar pela sua pergunta, você pode querer usar o retorno true; declaração.
Use a instrução 'break'. Acho engraçado que a resposta à sua pergunta esteja literalmente na sua pergunta! A propósito, uma simples pesquisa no Google poderia ter lhe dado a resposta.
Não é uma resposta direta à sua pergunta, mas existe uma maneira muito mais fácil de fazer o que você deseja. Se você estiver usando o .NET 3.5 ou posterior, pelo menos. É chamado Enumerable.Contains
provavelmente não, sou um cara de javascript / php. mas não há código suficiente aqui para aplicar uma solução de trabalho ... i removido do var $ e acrescentou .. provavelmente ainda não c +
johnny Craig
na verdade, varé um C # palavra-chave perfeitamente válido, então você é bom
return "ok" in sList:
- não há algo comparável em c #?Respostas:
Como alternativa, se você precisar fazer outras coisas depois de encontrar o item:
fonte
bool found = callFunctionInFirstCodeSnipper(list); // do stuff
Use
break;
e isso sairá do loop foreachfonte
Você pode evitar loops explícitos seguindo a rota LINQ:
fonte
Contains("ok")
.Contains
assume que você está repetindo umaICollection<T>
.Any
funcionaria em qualquer coisa que fosse do tipoIEnumerable<T>
e, nesse caso, a pergunta não indica explicitamente em que tipo de coleção está sendo repetida (aList
é um palpite bastante justo).Deve fazer o truque. A instrução break acabará a execução do loop, enquanto a instrução return obviamente encerrará toda a função. A julgar pela sua pergunta, você pode querer usar o retorno true; declaração.
fonte
Você pode usar
break
quais saltos do loop mais próximo, ou apenas diretamentereturn true
fonte
Use a instrução 'break'. Acho engraçado que a resposta à sua pergunta esteja literalmente na sua pergunta! A propósito, uma simples pesquisa no Google poderia ter lhe dado a resposta.
fonte
e quanto a:
Isso deve funcionar, se tudo o que você quer fazer é procurar um "ok" e retornar a resposta ...
fonte
Não é uma resposta direta à sua pergunta, mas existe uma maneira muito mais fácil de fazer o que você deseja. Se você estiver usando o .NET 3.5 ou posterior, pelo menos. É chamado Enumerable.Contains
fonte
fonte
Retorne direto do loop:
Ou use
break
:No entanto, no seu caso, pode ser melhor fazer algo assim:
fonte
fonte
$
não é uma sintaxe C # válida.var
é um C # palavra-chave perfeitamente válido, então você é bom