gpt4 book ai didi

c# - 获取枚举器 : return or yield return

转载 作者:行者123 更新时间:2023-12-02 08:38:55 28 4
gpt4 key购买 nike

我的类实现了 IEnumerable。并且可以编译这两种方式来编写 GetEnumerator 方法:

public IEnumerator GetEnumerator()
{
yield return Database[id].GetEnumerator();
}

public IEnumerator GetEnumerator()
{
return Database[DatabaseId].GetEnumerator();
}

其中数据库[id] 是列表。这些实现之间有什么区别吗?

最佳答案

编译的原因是因为你不清楚可枚举是什么。如果你把它变成通用的,它就会变得更明显:

public IEnumerator<Foo> GetEnumerator()
{
return Database[id].GetEnumerator();
}

对比

public IEnumerator<IEnumerator<Foo>> GetEnumerator()
{
yield return Database[id].GetEnumerator();
}

您的yield return 版本没有产生结果:它正在产生迭代器 - 它是一个迭代器的迭代器,一个枚举器的枚举器。而不是一个好办法。基本上,“不要那样做”。

关于c# - 获取枚举器 : return or yield return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18487199/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com