2011-07-04 12 views
79

mam ten obiekt:Inicjowanie IEnumerable <string> W języku C#

IEnumerable<string> m_oEnum = null; 

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

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

ale powiedzieć „IEnumerable robi zawierać metodę add ciąg. Każdy pomysł? Dzięki

Odpowiedz

130

Ok, dodając do odpowiedzi stwierdził, że możesz być również szuka

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

lub

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

'Enumerable.Empty ()' jest tatą. Dokładnie to, czego potrzebowałem. –

71

IEnumerable<T> jest interfejsem. Trzeba zainicjować z rodzaju betonu (który implementuje IEnumerable<T>). Przykład :

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

nie można instancję interfejsu - trzeba podać konkretną realizację IEnumerable

21

Jako.realizuje IEnumerable

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

DownVoter, dlaczego? –

15

IEnumerable jest po prostu interfejs i dlatego nie mogą być bezpośrednio utworzyć.

Musisz stworzyć konkretną klasę (jak List)

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

można następnie przekazać to do niczego oczekiwał IEnumerable.

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

IEnumerable<string> m_oEnum = GetData(); 
+6

Chociaż trochę przesadzam, +1 przy korzystaniu z plonu –

+0

@AdrianCarneiro +1 dla wierszyka – 5argon

Powiązane problemy