Inicjowanie IEnumerable <string> w C #


116

Mam ten przedmiot:

IEnumerable<string> m_oEnum = null;

i chciałbym go zainicjować. Próbowałem

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

ale mówi: „IEnumerable nie zawiera metody dodawania ciągu. Masz pomysł? Dzięki

Odpowiedzi:


182

Ok, dodając do podanych odpowiedzi, których możesz również szukać

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

lub

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

4
Teraz jest stary, ale unikałbym drugiej opcji. Możesz chcieć, aby to współdziałało z innymi IEnumerables, które nie są zgodne z tablicami.
Joel Coehoorn

94

IEnumerable<T>to interfejs. Musisz zainicjować z konkretnym typem (który implementuje IEnumerable<T>). Przykład:

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

31

As string[]implementuje IEnumerable

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

19

IEnumerable jest tylko interfejsem, więc nie można go bezpośrednio utworzyć.

Musisz stworzyć konkretną klasę (np. A List)

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

możesz następnie przekazać to do wszystkiego, co oczekuje pliku IEnumerable.


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

IEnumerable<string> m_oEnum = GetData();

8
Chociaż trochę przesada, +1 za użycie zysku
Adriano Carneiro

1
@AdrianCarneiro +1 do rymu
5argon

6

Nie można utworzyć wystąpienia interfejsu - należy podać konkretną implementację IEnumerable.


2

Możesz utworzyć statyczną metodę, która zwróci żądane IEnumerable w następujący sposób:

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

Alternatywnie po prostu zrób:

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

0

IEnumerable to interfejs, zamiast szukać sposobu tworzenia instancji interfejsu, utwórz implementację pasującą do interfejsu: utwórz listę lub tablicę.

IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.