En C#, j'utilise souvent LINQ et IEnumerable. Et tout va pour le mieux (ou du moins pour la plupart).
Cependant, dans de nombreux cas, je me retrouve à avoir besoin d'un vide IEnumerable<X>
par défaut. C'est-à-dire que je voudrais
for (var x in xs) { ... }
pour fonctionner sans avoir besoin d'un contrôle de nullité. C'est ce que je fais actuellement, en fonction du contexte :
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
Maintenant, alors que ce qui précède est parfaitement bien pour moi -- c'est-à-dire si la création de l'objet tableau entraîne des frais supplémentaires. ne s'en soucient pas -- Je me demandais.. :
Existe-t-il un singleton "empty immutable IEnumerable/IList" en C#/.NET ? (Et, même si ce n'est pas le cas, existe-t-il une "meilleure" façon de traiter le cas décrit ci-dessus).
Java a Collections.EMPTY_LIST
singleton immuable -- "bien typé" via Collections.emptyList<T>()
-- Je ne suis pas sûr qu'un concept similaire puisse fonctionner en C#, car les génériques sont gérés différemment.
Merci.