私は通常、このように、配列の構文を使用して単一の値からシーケンスを作成します。好きな方法は、単一の値から新しいIEnumerable <T>シーケンスを作成するか?
IEnumerable<string> sequence = new string[] { "abc" };
か、新しいリストを使用。私は、誰かが同じことをするためのより表現力豊かな方法を持っているかどうか聞いてみたいと思います。
私は通常、このように、配列の構文を使用して単一の値からシーケンスを作成します。好きな方法は、単一の値から新しいIEnumerable <T>シーケンスを作成するか?
IEnumerable<string> sequence = new string[] { "abc" };
か、新しいリストを使用。私は、誰かが同じことをするためのより表現力豊かな方法を持っているかどうか聞いてみたいと思います。
あなたの例は空のシーケンスではなく、1つの要素を持つシーケンスです。あなたが行うことができます文字列の空のシーケンスを作成するには
var sequence = Enumerable.Empty<string>();
EDIT OPは、彼らが単一の値を作成するために探していた明らかにしました。私は、拡張メソッドになるだろう
var sequence = new[] { "abc" };
D'oh、私は気が散った、すみません。私は、単一の値から作成することを意味し、空のインスタンスを作成しませんでした! –
これは '答え'の旗ですか? – n8wrl
このメソッドは、新しい配列を作成するよりも純粋に機能的です。 –
では私はあなたが示唆するもの好きですが、省略アレイタイプと
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
がフードの中で行っていることです。
私はあなたがそれを行うことができたことを知らなかった。私はこれが繰り返しを使うよりもはっきりしていると思う。 –
Yay型の推論。 –
しかし、これはIEnumerableではなく、配列です! – Zodman
か、単に方法
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");
を? – CoderDennis