2010-08-23 4 views
6

J'ai une liste et je besoin d'un IEnumerable, mais retourne List.GetEnumerator() List.Enumerator ...Comment obtenir IEnumerable <T> de la liste <T>?

est-il un moyen simple d'obtenir (coulée à?) IEnumerator? (Actuellement j'ai résolu ce avec une boucle, mais je sens couler la recenseur serait une bien meilleure solution) ...

+5

'Liste ' implémente déjà 'IEnumerable ' alors qu'essayez-vous de faire? –

+0

Voulez-vous dire 'IEnumerator '? –

+0

Peut-être liés, mais pas trop probable: http://msmvps.com/blogs/jon_skeet/archive/2010/07/27/iterate-damn-you.aspx – Kobi

Répondre

15

A List<T> est déjà un IEnumerable<T>.

+2

N'oubliez pas d'avoir 'using System.Linq' en haut de votre fichier pour pouvoir utiliser' List 'comme' IEnumerable '. –

+1

@Lukas Cenovsky: Vous êtes égaré, vous avez seulement besoin de cela pour les méthodes d'extension. – leppie

+0

Vous avez raison. Mon point est que quand j'ai besoin de 'IEnumerable ', j'en ai surtout besoin en raison de ses méthodes d'extension et j'oublie parfois d'inclure 'using System.Linq'. –

3

Il va convertir implicitement, si IEnumerable<MyType> foo = myList;

+2

Aucune conversion ne se produit, car il est implémente IEnumerable , et non castable à. – Dykam

4

Je pense que vous trouverez qu'une liste générique implémente IEnumerable, donc vous n'avez rien à faire.

Dans quelle situation essayez-vous d'utiliser ceci?

3

List<T> implémente IEnumerable<T>, de sorte que vous n'avez pas besoin de le jeter:

public IEnumerable<T> GetIEnumerable() 
{ 
    List<T> yourListOfT = GetList(); 
    return yourListOfT; 
} 
2

Une liste implémente IEnumerable donc il suffit d'utiliser votre liste.

Questions connexes