在 C # 中我使用了 LINQ 和 IEnumable,而且一切都很好(至少大部分是这样)。
然而,在许多情况下,我发现自己需要一个空的 IEnumerable<X>
作为默认值。也就是说,我想
for (var x in xs) { ... }
不需要空检查就可以工作。现在这是我目前所做的,取决于更大的上下文:
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
现在,虽然上面的代码是 对我来说完全没问题——也就是说,如果在创建数组对象 I 我不在乎时有任何“额外开销”——我想知道:
C #/中是否存在“空的不可变 IEnumable/IList”单例。NET? (即使没有,是否有“更好”的方法来处理上述情况?)
Java 具有 Collections.EMPTY_LIST
不可变的单例——通过 Collections.emptyList<T>()
实现的“良好类型”——这就达到了这个目的,尽管我不确定类似的概念是否可以在 C # 中工作,因为泛型的处理是不同的。
谢谢。