3

如果是这样,它支持哪些 .NET Framework 版本?

我已经在 .NET Framework 4.0 上对此进行了测试,它运行良好:

using System;
using System.Collections.Generic;

public class TestClass
{
    public IEnumerable Defer()
    {
        yield return 1;
        yield return 2;
        yield return 3;
    }
}
4

3 回答 3

4

是的,从yield关键字 was 开始就支持它。唯一的区别是它或多或少IEnumerable<object>,如果它必须做拳击,这可能会导致效率低下。除此之外,它完全一样。

于 2011-01-07T04:17:50.417 回答
1

非泛型 IEnumerable 不实现 IDisposable。当使用不支持 IEnumerable(Of T) 的枚举器时,VB.Net 和 C# 可能会回避类型 IDisposable 或 .Dispose() 方法,但当然不能依赖非泛型的所有消费者IEnumerable 这样做。如果可枚举的使用者没有正确地 .Dispose() 它,则枚举数的执行,包括显式或隐式 finally 子句,将被放弃。

于 2011-01-12T18:04:12.420 回答
1

由于yield关键字被简化为编译器技巧,因此大概这应该有效。它当然适用于 2.0 运行时;但是,我会犹豫对 1.1 发表任何声明。

于 2011-01-07T04:20:12.300 回答