Ініціалізація IEsumerable <string> In C #


115

У мене є цей об'єкт:

IEnumerable<string> m_oEnum = null;

і я хотів би його ініціалізувати. Спробував с

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

але він говорить "IEnumerable doesnt містить метод для додавання рядка. Будь-яка ідея? Спасибі

Відповіді:


181

Гаразд, додавши до зазначених відповідей, ви можете також шукати

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

або

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

4
Зараз старий, але я би уникав другого варіанту. Можливо, ви хочете, щоб це взаємоділо з іншими IEnumerables, які не сумісні з масивами.
Джоел Куехорн

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

Ви можете створити статичний метод, який поверне бажаний IE Численні, як цей:

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"};
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.