IEnumerable总是暗示一个集合吗?

Maj*_*ons 2 c# ienumerable

只是一个简单的问题IEnumerable:

是否IEnumerable总是意味着一个集合?或者它是合法的/可行的/好的/在单个对象上使用什么?

Luk*_*keH 5

IEnumerableIEnumerable<T>接口提出某种形式的序列,但该序列并不需要是一个具体的集合.

例如,在这种情况下,底层具体集合在哪里?

foreach (int i in new EndlessRandomSequence().Take(5))
{
    Console.WriteLine(i);
}

// ...

public class EndlessRandomSequence : IEnumerable<int>
{
    public IEnumerator<int> GetEnumerator()
    {
        var rng = new Random();
        while (true) yield return rng.Next();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}
Run Code Online (Sandbox Code Playgroud)