小编Tam*_*mas的帖子

使用IDisposable实例的yield返回IEnumerable <T>

我发现了一件有趣的事情.c#,.NET 4.0.我有一个代表IDisposable接口的类.在上面提到的类中我有一个函数,返回IEnumerable并返回yield.在调用时,controll跳过该函数.请勿介入.示例:

class Program
{
    static void Main(string[] args)
    {
        using (DispClass d = new DispClass())
        {
            d.Get2();
            d.Get1();
        }
    }

}

public class DispClass: IDisposable
{
    public DispClass()
    {
        Console.WriteLine("Constructor");
    }
    public void Dispose()
    {
        Console.WriteLine("Dispose");
    }
    public int Get1()
    {
        Console.WriteLine("Getting one");
        return 1;
    }
    public IEnumerable<int> Get2()
    {
        Console.WriteLine("Getting 1");
        yield return 1;
        Console.WriteLine("Getting 2");
        yield return 2;
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:"构造函数""获取一个""处理"

"获得1","获得2"在哪里?如果没有收益率返回并返回本地列表,我可以看到这些......

请解释!

c# yield idisposable

-2
推荐指数
1
解决办法
163
查看次数

标签 统计

c# ×1

idisposable ×1

yield ×1