Je crée généralement une séquence à partir d'une seule valeur en utilisant la syntaxe du tableau, comme ceci:
IEnumerable<string> sequence = new string[] { "abc" };
Ou en utilisant une nouvelle liste. J'aimerais savoir si quelqu'un a une façon plus expressive de faire la même chose.
Votre exemple n'est pas une séquence vide, c'est une séquence avec un élément. Pour créer une séquence de chaînes vide, vous pouvez le faire
var sequence = Enumerable.Empty<string>();
MODIFIER OP a précisé qu'ils cherchaient à créer une valeur unique. Dans ce cas
var sequence = Enumerable.Repeat("abc",1);
J'aime ce que vous proposez, mais avec le type de tableau omis:
var sequence = new[] { "abc" };
Ou encore 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.
ou créez simplement une méthode
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
if(items == null)
yield break;
foreach (T mitem in items)
yield return mitem;
}
ou
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
return items ?? Enumerable.Empty<T>();
}
utilisation:
IEnumerable<string> items = CreateEnumerable("single");