Menginisialisasi IEnumerable <string> Dalam C #

115

Saya memiliki objek ini:

IEnumerable<string> m_oEnum = null;

dan saya ingin memulainya. Mencoba dengan

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

tetapi dikatakan "IEnumerable tidak berisi metode untuk menambahkan string. Ada ide? Terima kasih

markzzz
sumber

Jawaban:

181

Oke, menambahkan jawaban yang dinyatakan mungkin juga Anda cari

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

atau

IEnumerable<string> m_oEnum = new string[]{};
lihat
sumber
4
Tua sekarang, tapi saya akan menghindari pilihan kedua. Anda mungkin ingin ini berinteraksi dengan IEnumerables lain yang tidak kompatibel dengan array.
Joel Coehoorn
92

IEnumerable<T>adalah sebuah antarmuka. Anda perlu memulai dengan tipe konkret (yang mengimplementasikan IEnumerable<T>). Contoh:

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

Sebagai string[]implementasi IEnumerable

IEnumerable<string> m_oEnum = new string[] {"1","2","3"}
Bob Vale
sumber
18

IEnumerable hanyalah sebuah antarmuka sehingga tidak dapat digunakan secara langsung.

Anda perlu membuat kelas beton (seperti a List)

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

Anda kemudian dapat meneruskan ini ke apa pun yang mengharapkan file IEnumerable.

ChrisF
sumber
13
public static IEnumerable<string> GetData()
{
    yield return "1";
    yield return "2";
    yield return "3";
}

IEnumerable<string> m_oEnum = GetData();
Kirill Polishchuk
sumber
8
Meskipun sedikit berlebihan, +1 karena menggunakan hasil
Adriano Carneiro
1
@AdrianCarneiro +1 untuk sajak
5argon
6

Anda tidak dapat membuat contoh antarmuka - Anda harus menyediakan implementasi IEnumerable yang konkret.

BonyT
sumber
1

Anda dapat membuat metode statis yang akan mengembalikan IEnumerable yang diinginkan seperti ini:

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

Atau lakukan saja:

IEnumerable<string> myStrings = new []{ "first item", "second item"};
yan yankelevich
sumber