我正在检查反射器中的代码,但我还没有发现它如何通过集合向后枚举?
由于没有计数信息,枚举总是从集合的"开始"开始,对吧?
这是.NET框架中的缺点吗?成本是否高于常规枚举?
IEnumerable是否必须使用Yield来延迟?
这是测试代码,它帮助我理解延迟执行和收益.
//immediate execution
public IEnumerable Power(int number, int howManyToShow)
{
var result = new int[howManyToShow];
result[0] = number;
for (int i = 1; i < howManyToShow; i++)
result[i] = result[i - 1] * number;
return result;
}
//deferred but eager
public IEnumerable PowerYieldEager(int number, int howManyToShow)
{
var result = new int[howManyToShow];
result[0] = number;
for (int i = 1; i < howManyToShow; i++)
result[i] = result[i - 1] * number;
foreach (var value in result)
yield return value; …Run Code Online (Sandbox Code Playgroud)