想象一下,我们有以下方法(伪C#):
static IEnumerable<T> Iterator<T>()
{
switch (SomeCondition)
{
case CaseA:
yield return default(T);
case CaseB:
yield return default(T);
yield return default(T);
case CaseC:
yield return default(T);
default:
break;
}
}
static IEnumerable<T> Array<T>()
{
switch (SomeCondition)
{
case CaseA:
return new[] { default(T) };
case CaseB:
return new[] { default(T), default(T) };
case CaseC:
return new[] { default(T) };
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们有很多类似这种方法的调用,那么哪一个会消耗更少的内存(以及更少的GC周期)?为了实现这种Enumerable.Once()场景,编写自己的Enumerable/Enumerator是否有意义?