C# · Essencial · Inglês · Técnico
IEnumerable
Interface mais básica de sequência: expõe GetEnumerator para percorrer elementos um a um com foreach. As coleções do .NET e os resultados do LINQ to Objects a implementam.
Onde usar
Aparece em parâmetros de método que só precisam ler uma sequência, aceitando array, lista ou iterador. Receber IEnumerable<T> deixa a API flexível, mas cuidado com enumerar a mesma sequência duas vezes.
Em código
double Media(IEnumerable<int> xs)
{
int soma = 0, n = 0;
foreach (var x in xs) { soma += x; n++; }
return n == 0 ? 0 : (double)soma / n;
}Exemplos
Accept an IEnumerable so callers can pass any collection.
Aceite um IEnumerable para o chamador poder passar qualquer coleção.
Careful, that IEnumerable gets enumerated twice.
Cuidado, esse IEnumerable é enumerado duas vezes.
Cuidado
Não presuma que um IEnumerable já está em memória: pode ser uma consulta adiada, e cada enumeração a executa de novo.
Sinônimos
sequência