93 votes

Manière préférée de créer un nouveau IEnumerable <T> séquence d'une seule valeur?

Je crée généralement une séquence à partir d'une valeur unique en utilisant la syntaxe de tableau, comme ceci:

 IEnumerable<string> sequence = new string[] { "abc" };
 

Ou en utilisant une nouvelle liste. J'aimerais savoir si quelqu'un a un moyen plus expressif de faire la même chose.

142voto

JaredPar Points 333733

Votre exemple n'est pas une séquence vide, c'est une séquence avec un élément. Pour créer une séquence vide de chaînes, vous pouvez faire

 var sequence = Enumerable.Empty<string>();
 

EDIT OP a précisé qu’ils cherchaient à créer une valeur unique. Dans ce cas

 var sequence = Enumerable.Repeat("abc",1);
 

65voto

Bryan Watts Points 22810

J'aime ce que vous suggérez, mais avec le type de tableau omis:

 var sequence = new[] { "abc" };
 

21voto

nawfal Points 13500

Ou même plus court,

 string[] single = { "abc" };
 

Je ferais une méthode d'extension:

 public static T[] Yield<T>(this T item)
{
    T[] single = { item };
    return single;
}
 

Ou encore mieux et plus court, juste

 public static IEnumerable<T> Yield<T>(this T item)
{
    yield return item;
}
 

C’est peut-être exactement ce que Enumerable.Repeat fait sous le capot.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X