2011-12-05 8 views

Odpowiedz

9

należy użyć IList<int> zamiast IEnumerable<int> za to:

IList<int> intYear = new List<int>(); 
intYear.Add(2011); 
// and so on 

IList<T> realizuje IEnumerable<T> więc można przekazać je do dowolnej metody robienia IEnumerable<T> jako argument.

6

Musisz użyć ICollection<T>, jak IEnumerable<T> jest używany tylko do iteracji po zbiorach.

ICollection<int> years = new List<T>(); 
years.Add(2010); 
years.Add(2011); 
3

IEnumerable nie ma metody Add. Zamiast tego powinieneś użyć IList.

IList<int> intYear = new List<int>(); 
intYear.Add(2010); 
+0

Sugestia reSharper: var intYear = nowa lista {2010}; Lubię bardziej swój sposób, ponieważ zapomnę, jak to zrobić, jeśli cały czas używam skrótów. – Rich

0

Korzystając Concat(IEnumerable) metodę klasy IEnumerable można najpierw wypełnić wszystkie wartości do listy, a następnie przypisać je do listy IEnumerable.

+0

Gdybyś mógł wykonać tę pracę, nie byłoby to proste. Są prostsze sposoby. – DonkeyMaster

+0

@DonkeyMaster, czy coś jest nie tak w moim poście? jeśli coś jest nie tak, to możesz to naprawić? –

+0

Interfejs 'IEnumerable ' nie określa metody 'Concat'. Istnieje metoda rozszerzenia, ale zwraca ona nowy, trzeci obiekt. Takie zachowanie prawdopodobnie zaskoczy OP. Interpretując oryginalny post, wydaje się, że to, czego potrzebuje OP, to "IList ". – DonkeyMaster

Powiązane problemy