C#でのIEnumerable <string>の初期化


115

私はこのオブジェクトを持っています:

IEnumerable<string> m_oEnum = null;

それを初期化したいと思います。と試した

IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};

「IEnumerableには文字列を追加するメソッドが含まれていません。何かアイデアはありませんか?ありがとう

回答:


181

[OK]を、述べた答えに追加するあなたは可能性がありますまた、探しています

IEnumerable<string> m_oEnum = Enumerable.Empty<string>();

または

IEnumerable<string> m_oEnum = new string[]{};

4
今は古いですが、2番目のオプションは避けます。これを、配列と互換性のない他のIEnumerableと相互作用させたい場合があります。
Joel Coehoorn、2018年

92

IEnumerable<T>インターフェースです。(を実装するIEnumerable<T>)具体的なタイプから開始する必要があります。例:

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};


18

IEnumerable 単なるインターフェースなので、直接インスタンス化することはできません。

(のようなList)具象クラスを作成する必要があります

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };

次に、これを期待するものに渡すことができますIEnumerable



6

インターフェイスをインスタンス化することはできません-IEnumerableの具体的な実装を提供する必要があります。


1

次のような目的のIEnumerableを返す静的メソッドを作成できます。

public static IEnumerable<T> CreateEnumerable<T>(params T[] values) =>
    values;
//And then use it
IEnumerable<string> myStrings = CreateEnumerable("first item", "second item");//etc..

または、単に次のようにします。

IEnumerable<string> myStrings = new []{ "first item", "second item"};
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.