3

もしそうなら、それはどの.NET Frameworkバージョンでサポートされていますか?

これを.NETFramework4.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キーワードがあった時からずっとサポートされています。唯一の違いは、それが多かれ少なかれIEnumerable<object>、ボクシングをしなければならない場合に非効率につながる可能性があるということです。それ以外はまったく同じです。

于 2011-01-07T04:17:50.417 に答える
1

yieldキーワードはコンパイラのトリックに還元されるので、おそらくこれはうまくいくはずです。それは確かに2.0ランタイムで動作します。ただし、1.1についての発言は躊躇します。

于 2011-01-07T04:20:12.300 に答える
1

非ジェネリックIEnumerableはIDisposableを実装していません。IEnumerable(Of T)をサポートしない列挙子を使用する場合、VB.NetおよびC#はIDisposableまたは.Dispose()メソッドのいずれかをダックタイピングする可能性がありますが、非ジェネリックのすべてのコンシューマーに依存することはできません。そうするためにIEnumerable。列挙型のコンシューマーが適切に.Dispose()を実行しない場合、明示的または暗黙的なfinally節を含む列挙子の実行は中止されます。

于 2011-01-12T18:04:12.420 に答える