返回空集合

时间:2008-12-05 21:22:12

标签: c# linq

查看此测试:

[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方式。

这让我想知道:

  • 哪个对其他开发者更具视觉吸引力?
  • 是否有任何隐藏的陷阱会让我们更喜欢一个而不是另一个?

谢谢!

3 个答案:

答案 0 :(得分:6)

我更喜欢任何为开发人员提供最清晰意义的方法。就个人而言,我甚至不知道 yield break是什么; 行是什么,所以返回'Enumerable.Empty();`在我的任何代码库中都是首选

答案 1 :(得分:4)

Enumerable.Empty:文档声称它“缓存了一个空序列”。反射器证实。如果缓存行为对您很重要,那么Enumerable.Empty

就有一个优势

答案 2 :(得分:1)

更快可能是:

T[] e = {};
return e;