哪个更好,Enumerable.Empty 还是new ?

这些都是一样的:

IEnumerable i; i = Enumerable.Empty(); i = new string[0]; 

那么,使用哪个?

我认为第一个更清楚地传达意图,但它更大,更嘈杂,更不用说调试器中的丑陋。 如果我正在阅读Reflector,那么第二个在内存和CPU方面也更有效率。

我倾向于new type[0] ,但想知道你们都在想什么。

Enumerable.Empty缓存空数组的创建,因此将始终返回相同的数组,而第二个语句会在每次调用时创建一个新数组。

我倾向于使用Enumerable.Empty ,因为它更清楚地显示了程序员的意图,而且因为内存使用而使用显式数组创建是托管程序中的过早优化,因为运行时几乎总是分配更多而不是必要的记忆。

在这种情况下,性能/内存使用方面的差异令人难以置信,因此这不是我的决定性因素。

我个人会使用Enumerable.Empty ,主要是因为它非常清楚地描述了开发人员的意图。

它看起来像Enumerable.Empty委托给EmptyEnumerable ,它返回一个长度为0的数组。但它每次都返回相同的数组,并保持该空数组永远存活。