IEnumerable <string> in C # initialisieren


115

Ich habe dieses Objekt:

IEnumerable<string> m_oEnum = null;

und ich möchte es initialisieren. Versucht mit

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

aber es heißt "IEnumerable enthält keine Methode zum Hinzufügen von Zeichenfolgen. Irgendeine Idee? Danke

Antworten:


181

Ok, zu den angegebenen Antworten hinzufügen, nach denen Sie möglicherweise auch suchen

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

oder

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

4
Alt jetzt, aber ich würde die zweite Option vermeiden. Möglicherweise möchten Sie, dass dies mit anderen IEnumerables interagiert, die nicht mit Arrays kompatibel sind.
Joel Coehoorn

92

IEnumerable<T>ist eine Schnittstelle. Sie müssen mit einem konkreten Typ (der implementiert IEnumerable<T>) initiieren . Beispiel:

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

31

As string[]implementiert IEnumerable

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

18

IEnumerable ist nur eine Schnittstelle und kann daher nicht direkt instanziiert werden.

Sie müssen eine konkrete Klasse erstellen (wie a List)

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

Sie können dies dann an alles weitergeben, was eine erwartet IEnumerable.


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

IEnumerable<string> m_oEnum = GetData();

8
Obwohl ein wenig übertrieben, +1 für die Verwendung von Ertrag
Adriano Carneiro

1
@ AdrianCarneiro +1 für den Reim
5argon

6

Sie können eine Schnittstelle nicht instanziieren - Sie müssen eine konkrete Implementierung von IEnumerable bereitstellen.


1

Sie können eine statische Methode erstellen, die die gewünschte IEnumerable wie folgt zurückgibt:

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

Alternativ tun Sie einfach:

IEnumerable<string> myStrings = new []{ "first item", "second item"};
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.