私はクラスfooのインスタンスにあり、IEnumerableとして返したいと思います。これを行うための最善の慣用的な方法はただの1要素の配列を作成しnew[] { foo }
のようなものであるIEnumerableとして単一のインスタンスオブジェクトを返します
IEnumerable<foo>.fromInstance(foo)
私はクラスfooのインスタンスにあり、IEnumerableとして返したいと思います。これを行うための最善の慣用的な方法はただの1要素の配列を作成しnew[] { foo }
のようなものであるIEnumerableとして単一のインスタンスオブジェクトを返します
IEnumerable<foo>.fromInstance(foo)
オプション:
ReadOnlyCollection<T>
ラッパーを作成することもできます。Enumerable.Repeat(item, 1)
を使用してください。ここでの最善の答えは、使用方法によって異なります。 には、シーケンスを使用する別のメソッドを呼び出す必要があり、変更されないことがわかっている場合は、おそらく配列を使用します。
var wholeList = regularList.Concat(new[] { finalValue });
私はConcat
は、配列を変異させるつもりはないことを自信を持っており、他には何も今までに配列自体への参照を参照してくださいません:たとえば、いくつかの他の配列にConcat
を呼び出すために、あなたが望むかもしれません。
シーケンスを他のコードに戻す必要があり、それがどうなるかわからない場合は、おそらくEnumerable.Repeat
を使用します。
Rx(http://msdn.microsoft.com/en-us/devlabs/ee794896)を使用する人のためのもう1つのオプションは、EnumerableEx.Returnメソッドです。 –
もっともきれいな方法がありません: 'new [] {item}' – data
@data_smith:「配列やリストのようなコレクションクラスのインスタンスを作成する」のはどうですか? –
: は、私は多分...など、新しいリストを作成することなく、次のようなものを
をそれを行うことができますどのタイプのものでもfoo
と宣言されています。
これは、配列が不変ではないため、誰かがIEnumerable<T>
をT[]
にキャストしてそこの値を変更できることです。しかし、これはかなりありそうもないので、私はそれについて心配しない。
短くて簡潔できれいです。これは一番上にあって受け入れられるべきです。 +1 – data
IENumerableは、列挙できるものに使用されることになっています。そのため、単一のインスタンスに対して使用すると、かなり奇妙に見えます。本当に必要な場合は、このようにすることができます。それは良い方法かもしれませんが、これは仕事を得る必要があります。
かかわらず、あなたは、この、あなたが実際には1つの要素のリストを作成しようとしている、そしてそれはそれを作るために何の理由が本当にいない参照する方法のList<foo> myList = new List<foo>();
myList.Add(myInstanceOfFoo);
IEnumerable myEnumerable = myList.AsEnumerable();
リスト。
単一のオブジェクトをIEnumerableに変換する理由はたくさんあります。例えば。IEnumerableを期待するメソッドに渡すか、Maybeモナドなどをエミュレートするために使用することができます。 –
あなたはこれを行うことができます:
public IEnumerable<Foo> GetSingleFooAsEnumerable() {
yield return singleFoo;
}
私はこの応答を2回返します。このテクニックは、特定のメンバ変数を列挙するのにも役立ちます。 – Apelsin
[単一項目をIEnumerableとして渡す]の複製が可能です。(http://stackoverflow.com/questions/1577822/passing-a-single-item-as-ienumerablet) –
nawfal
[単一項目を次のように渡すIEnumerable](https://stackoverflow.com/questions/1577822/passing-a-single-item-as-ienumerablet) –