foreach, extra instruction conditionnelle
Désolé, aucun espoir d'une des marques de moi vers le bas pour une question de noob, je n'ai pas de C# ref livres><
Est-il un moyen de mettre un extra instruction conditionnelle à l'intérieur de la boucle foreach, par exemple:
string[] giggles = new string[6] { "one", "two", "three", "four", "five", "Six" };
int i = 0;
foreach (string gig in giggles && i < 4)
{
lblDo.Text = gig;
i++;
}
De toute évidence, cela ne fonctionne pas, mais il ya quelque chose de similaire, je peux utiliser ou suis-je coincé avec l'aide d'un if/instruction break dans la boucle? Merci!
Que voulez-vous extra conditionnelle de contrôle? Quel serait le résultat attendu de la ci-dessus?
Shain: on dirait qu'il veut inclure uniquement les quatre premiers éléments.
Ne pas vous dire
oui, désolé, >< montage de
Shain: on dirait qu'il veut inclure uniquement les quatre premiers éléments.
Ne pas vous dire
string gig in giggles && i < 4
?oui, désolé, >< montage de
OriginalL'auteur Nick Rolando | 2011-01-11
Vous devez vous connecter pour publier un commentaire.
Vous devrez utiliser si/pause, ou d'une boucle for. La boucle foreach est presque volontairement limité, car le point est simplement pour effectuer une itération sur une énumération collection*. Si vous voulez plus concise de contrôle de la boucle, vous êtes à utiliser les boucles for, while ou do-while.
*en fait, tout ce qui a un GetEnumerator() la méthode.
OriginalL'auteur siride
Vous pouvez utiliser:
Ce qu'il fait est de créer un nouvel agent recenseur qui est limitée à la première des quatre éléments de
giggles
.Take()
est l'un des LINQ méthodes d'extension, c'est donc un peu différente de celle de votre conditionnelle, mais le résultat est le même.Fondamentalement, vous pouvez réaliser beaucoup de choses que par la manipulation de la collection. Voici le code qui vous a été expressément demander:
Bon appel sur la
Take()
!C'est élégant dans son propre droit, mais pour un nouvel utilisateur de C#, il n'a pas vraiment d'expliquer que le foreach ne pas utiliser un conditionnel et non-standard de façon à essayer de le faire...
Pourriez-vous jeter un
giggles.Where()
sur la fin? Intéressant...C'est très bien, mais cela ne répond pas à ma question 🙁 j'ai besoin d'un un supplémentaire instruction conditionnelle. foreach (string concert de fou rire && flag == true) {blahblah..setflag}
OriginalL'auteur nan
Dans ce genre de situation, il suffit de refactoriser cela dans une boucle for à la place d'une boucle foreach.
foreach
ne fonctionne pas basé sur des instructions conditionnelles, mais plutôt des opérations une fois par article d'un IEnumerable.for
, d'autre part, est spécialement conçu pour gérer les instructions conditionnelles.Allais-je écrire ce que:
Si "fou rire" est quelque chose que vous êtes en tirant d'ailleurs, et peut-être moins de 4 éléments, vous pouvez:
Foreach est vraiment destiné à être utilisé comme son nom l'indique - "Pour chaque élément de cette collection...", d'autre part, est-elle pour l'installation;conditionnel;step_operation)...
OriginalL'auteur Reed Copsey
Utiliser une boucle for à la place?
OriginalL'auteur Marnix
Essayez d'utiliser un
if
bloc à l'intérieur de la boucle. etbreak
mot-clé pour sortir de la boucle si nécessaire:Exemple:
OriginalL'auteur decyclone
Cela dépend vraiment de ce que vous essayez de faire. Vous pouvez utiliser le Prendre() dans cet exemple.
Mais si vous voulez par exemple les chaînes de caractères qui commence par "f", vous pouvez utiliser la où
OriginalL'auteur Conrad Frix
Si fait, la boucle foreach peut travailler avec beaucoup de conditions.
Les fonctions peuvent contenir des conditions qui n'affectent pas la liste elle-même:
Pour votre besoin, vous pouvez utiliser quelque chose comme ça:
Récemment, j'ai utilisé de cette façon dans le but de briser la boucle sur les conditions d'extérieur:
OriginalL'auteur corniquet