查看此测试:
[TestFixture]
public class Quick_test
{
[Test]
public void Test()
{
Assert.AreEqual(0, GetByYield().Count());
Assert.AreEqual(0, GetByEnumerable().Count());
}
private IEnumerable<string> GetByYield()
{
yield break;
}
private IEnumerable<string> GetByEnumerable()
{
return Enumerable.Empty<string>();
}
}
当我编写存根方法时,我通常使用Enumerable.Empty方法。我偶然发现了一些我编写的旧代码,其中我使用了yield方式。
这让我想知道:
谢谢!
答案 0 :(得分:6)
我更喜欢任何为开发人员提供最清晰意义的方法。就个人而言,我甚至不知道 yield break是什么; 行是什么,所以返回'Enumerable.Empty();`在我的任何代码库中都是首选
答案 1 :(得分:4)
Enumerable.Empty:文档声称它“缓存了一个空序列”。反射器证实。如果缓存行为对您很重要,那么Enumerable.Empty
就有一个优势答案 2 :(得分:1)
更快可能是:
T[] e = {};
return e;