Comment puis-je récupérer les éléments d'une liste sans utiliser de boucle foreach?Comment récupérer les éléments dans la liste sans utiliser la boucle foreach en C#?
Répondre
var list = new List<int> { 1, 2, 3, 4, 5 };
for (int i = 0; i < list.Count(); i++)
{
var element = list[i];
}
ou
var list = new List<int> { 1, 2, 3, 4, 5 };
using (var enumerator = list.GetEnumerator())
{
while (enumerator.MoveNext())
{
var element = enumerator.Current;
}
}
N'oubliez pas de disposer de l'énumérateur. –
Merci - mis à jour –
Vous dites liste, mais vous ne spécifiez pas la classe List<T>
comme this answer assumes (aussi, pourrait-on ajouter que cette réponse utilise la méthode d'extension Count(). Puisque vous connaître le type est de List<T>
il est préférable d'utiliser la propriété Count ).
Si vous travaillez toujours avec l'implémentation de l'interface IList<T>
, l'utilisation d'une boucle for qui itère un index puis accède à l'indexeur avec cette valeur fonctionnera correctement. Toutefois, si vous avez affaire à des implémentations IEnumerable<T>
, cela ne fonctionnera pas toujours. Au contraire, vous devez faire ce qui suit:
// Get the IEnumerator<T> from the list.
IEnumerator<T> enumerator = list.GetEnumerable();
// Dispose if necessary.
using (enumerator as IDisposable)
{
// Cycle while there are items.
while (enumerator.MoveNext())
{
// Work with enumerator.Current here.
}
}
Voici comment le compilateur étend l'instruction foreach lorsqu'il est compilé. Fondamentalement, puisque les implémentations IEnumerable<T>
peuvent implémenter IDisposable, il se prépare à cette éventualité en essayant de convertir en IDisposable. Si ce n'est pas le cas, l'instruction using ne fait rien à la sortie. Lorsque vous utilisez foreach sur des tableaux, le compilateur développera une boucle qui accède aux éléments par index (en supposant que vous travaillez directement avec une instance de tableau), et non l'approche de l'énumérateur ci-dessus.
Si vous essayez d'éviter ce type de boucle:
foreach(var item in list) {};
... vous pouvez utiliser des expressions Linq ou Lambda pour rechercher et récupérer dans la liste.
Par exemple:
using System.Linq;
// ... with Lambda
var ints = new List<int>(){1,2,3,4,5};
var evenInts = ints.ForEach(i => i % 2 == 0);
// with straight Linq-to-objects:
var oddInts = from i in ints
where i % 2 == 1
select i;
- 1. Comment puis-je copier des éléments de la liste vers la liste sans foreach?
- 2. La boucle foreach générique en C#
- 3. perl + comment utiliser Chomp en boucle foreach
- 4. DeleteObject() dans la boucle foreach
- 5. Agrégation dans la boucle foreach
- 6. comment utiliser la collecte de liste pour "foreach" dans SSIS
- 7. foreach Boucle dans LaTeX
- 8. Ajouter une valeur dans la liste à partir de la liste des valeurs sans utiliser pour la boucle
- 9. C - Récupérer des éléments d'une liste
- 10. Comment parcourir la tâche de boucle foreach?
- 11. Modification des éléments de la liste dans la boucle (python)
- 12. Utilisation de IEnumerable sans boucle foreach
- 13. Split sprintf() dans la boucle foreach
- 14. Organiser la liste en reverse_array dans les {foreach}
- 15. liste d'édition à l'intérieur de la boucle foreach
- 16. Comment puis-je accéder à la valeur suivante d'une collection dans une boucle foreach en C#?
- 17. Récupérer des éléments de la liste dans le schéma
- 18. somme totale de tous les nombres dans c: boucle forEach
- 19. Deux tableaux dans la boucle foreach?
- 20. html en boucle foreach
- 21. comment copier une liste dans une nouvelle liste, ou récupérer la liste par valeur dans C#
- 22. Accès aux lignes dans un résultat LINQ sans boucle Foreach?
- 23. Foreach tout en ajoutant des éléments à la collection en boucle
- 24. Comment utiliser pour la boucle en xslt
- 25. Comment utiliser foreach dans C++ cli dans le code managé
- 26. Remplacement tableau en boucle foreach avec tableau modifié dans la même boucle
- 27. En boucle dans tous les éléments de ListBox?
- 28. Dans .Net, comment convertir une ArrayList en une liste générique fortement typée sans utiliser foreach?
- 29. comment modifier des éléments dans une liste générique en utilisant foreach?
- 30. Comment supprimer des éléments de la liste en vélo la liste elle-même sans dupliquer
Je voudrais savoir pourquoi vous ne voulez pas utiliser foreach. Cela pourrait révéler un détail qui nous aiderait à mieux répondre à votre question. –
Qu'essayez-vous de faire? Pourquoi ne pouvez-vous pas utiliser foreach? Qu'en est-il de l'indexeur de liste? –
J'aime récupérer en utilisant l'itérateur – ratty