En C # uso LINQ e IEnumerable un poco. Y todo está bien y bien (o al menos en su mayor parte).
Sin embargo, en muchos casos me encuentro que necesito un vacío IEnumerable<X>
por defecto. Es decir, me gustaria
for (var x in xs) { ... }
para trabajar sin necesidad de una verificación nula. Ahora, esto es lo que hago actualmente, dependiendo del contexto más amplio:
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
Ahora, aunque lo anterior está perfectamente bien para mí , es decir, si hay alguna "sobrecarga adicional" con la creación del objeto de matriz, simplemente no me importa , me preguntaba:
¿Hay singleton "IEnumerable / IList inmutable vacío" en C # /. NET? (E, incluso si no es así, ¿existe una forma "mejor" de manejar el caso descrito anteriormente?)
Java tiene Collections.EMPTY_LIST
singleton inmutable - "bien escrito" vía Collections.emptyList<T>()
- que sirve para este propósito, aunque no estoy seguro de si un concepto similar podría funcionar en C # porque los genéricos se manejan de manera diferente.
Gracias.