C # 'da IEnumerable <string> Başlatılıyor


116

Bu nesneye sahibim:

IEnumerable<string> m_oEnum = null;

ve onu başlatmak istiyorum. İle denendi

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

ancak "IEnumerable dize eklemek için bir yöntem içermiyor. Herhangi bir fikriniz var mı? Teşekkürler

Yanıtlar:


182

Tamam, ayrıca arıyor olabileceğinizi belirtilen cevaplara ekleyerek

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

veya

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

4
Şimdi eski, ama ikinci seçenekten kaçınırdım. Bunun dizilerle uyumlu olmayan diğer IEnumerables ile etkileşime girmesini isteyebilirsiniz.
Joel Coehoorn

94

IEnumerable<T>bir arayüzdür. Somut bir türle (uygulayan IEnumerable<T>) başlamanız gerekir . Misal:

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

31

Gibi string[]aletlerin IEnumerable

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

19

IEnumerable sadece bir arayüzdür ve bu nedenle doğrudan somutlaştırılamaz.

Somut bir sınıf oluşturmanız gerekir (a gibi List)

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

daha sonra bunu bir IEnumerable.


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

IEnumerable<string> m_oEnum = GetData();

8
Biraz fazla olsa da, verim kullanmak için +1
Adriano Carneiro

1
@AdrianCarneiro Kafiye için +1
5argon

6

Bir arabirimi başlatamazsınız - IEnumerable'ın somut bir uygulamasını sağlamalısınız.


2

İstenen IEnumerable'ı şu şekilde döndürecek statik bir yöntem oluşturabilirsiniz:

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

Alternatif olarak şunları yapın:

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

0

IEnumerable bir arabirimdir, bir arabirim örneğinin nasıl oluşturulacağını aramak yerine arabirimle eşleşen bir uygulama oluşturun: bir liste veya bir dizi oluşturun.

IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.