In C # verwende ich LINQ und IEnumerable ein gutes Stück. Und alles ist gut und schön (oder zumindest meistens).
In vielen Fällen stelle ich jedoch fest, dass ich IEnumerable<X>
standardmäßig ein Leerzeichen benötige . Das heißt, ich würde gerne
for (var x in xs) { ... }
zu arbeiten, ohne eine Nullprüfung zu benötigen. Dies ist, was ich derzeit mache, abhängig vom größeren Kontext:
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
Nun, obwohl das oben Genannte für mich vollkommen in Ordnung ist - das heißt, wenn es beim Erstellen des Array-Objekts einen "zusätzlichen Aufwand" gibt, ist es mir einfach egal -, habe ich mich gefragt:
Gibt es in C # /. NET den Singleton "leerer unveränderlicher IEnumerable / IList"? (Und selbst wenn nicht, gibt es eine "bessere" Möglichkeit, den oben beschriebenen Fall zu behandeln?)
Java hat einen Collections.EMPTY_LIST
unveränderlichen Singleton - "gut typisiert" über Collections.emptyList<T>()
-, der diesem Zweck dient, obwohl ich nicht sicher bin, ob ein ähnliches Konzept überhaupt in C # funktionieren könnte, da Generika anders behandelt werden.
Vielen Dank.