哪个更好,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的数组。但它每次都返回相同的数组,并保持该空数组永远存活。