In C# uso LINQ e IEnumerable un bel po '. E tutto va bene-bene (o almeno per lo più così).C'è un singleton "Lista vuota" in C#?
Tuttavia, in molti casi, mi ritrovo che ho bisogno di uno IEnumerable<X>
vuoto come predefinito. Cioè, mi piacerebbe
for (var x in xs) { ... }
funzionare senza aver bisogno di un null-check. Ora, questo è quello che attualmente faccio, a seconda del contesto più ampio:
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
Ora, mentre il sopra è perfettamente bene per me - che è, se c'è qualche "testa extra" con la creazione della matrice oggetto che semplicemente non mi interessa - mi chiedevo:
c'è "immutabile vuoto IEnumerable/IList" Singleton in C#/NET.? (E, anche se non, c'è un modo "migliore" per gestire il caso descritto sopra?)
Java ha Collections.EMPTY_LIST
immutabile Singleton - "ben tipato" tramite Collections.emptyList<T>()
- che serve a questo scopo, anche se io Non sono sicuro se un concetto simile potrebbe funzionare anche in C# perché i farmaci generici sono gestiti in modo diverso.
Grazie.
Beh, dannazione :) Questo è quello che ottengo per concentrarsi su List/IList e non Enumerable/IEnumerable, grazie a tutti - voti tutto intorno. –
http: // stackoverflow.it/questions/3229698/how-can-i-return-an-empty-enumerable –
'matrice statica pubblica Array {public statico readonly T [] Empty = new T [0]; } 'e può essere chiamato come:' Array .Empty'. Ho chiesto a questo proposito [qui in CodeReview] (http://codereview.stackexchange.com/q/20417/17039). –