私は通常、次のような配列構文を使用して単一の値からシーケンスを作成します。
IEnumerable<string> sequence = new string[] { "abc" };
または、新しいリストを使用します。誰かが同じことをするより表現力豊かな方法を持っているかどうか聞いてみたい。
あなたの例は空のシーケンスではなく、1つの要素を持つシーケンスです。空の文字列を作成するには
var sequence = Enumerable.Empty<string>();
[〜#〜] edit [〜#〜] OPは、単一の値を作成しようとしていることを明確にしました。その場合
var sequence = Enumerable.Repeat("abc",1);
私はあなたが提案するものが好きですが、配列型は省略されています:
var sequence = new[] { "abc" };
またはさらに短く、
string[] single = { "abc" };
拡張メソッドを作成します:
public static T[] Yield<T>(this T item)
{
T[] single = { item };
return single;
}
またはさらに良くて短く、ただ
public static IEnumerable<T> Yield<T>(this T item)
{
yield return item;
}
おそらくこれはまさにEnumerable.Repeat
は内部で実行しています。
または単にメソッドを作成する
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
if(items == null)
yield break;
foreach (T mitem in items)
yield return mitem;
}
または
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
return items ?? Enumerable.Empty<T>();
}
使用法 :
IEnumerable<string> items = CreateEnumerable("single");