SORU
31 Temmuz 2009, Cuma


Nasıl bir IEnumerable<T> koleksiyonuna bir madde ekleyebilir miyim?

Başlık olarak yukarıdaki sorumu. Örneğin,

IEnumerable<T> items = new T[]{new T("msg")};
items.ToList().Add(new T("msg2"));

ama sonuçta bu sadece içinde 1 adet vardır.

items.Add(item) gibi bir yöntem kullanabilir miyiz?

List<T> gibi

CEVAP
31 Temmuz 2009, Cuma


IEnumerable<T> mutlaka hangi öğeleri eklenebilir bir koleksiyon temsil etmiyor çünkü açamıyor. Aslında, mutlaka bir koleksiyon hiç göstermiyor! Örneğin:

IEnumerable<string> ReadLines()
{
     string s;
     do
     {
          s = Console.ReadLine();
          yield return s;
     } while (s != "");
}

IEnumerable<string> lines = ReadLines();
lines.Add("foo") // so what would this supposed to do??

Ne yapabilirsiniz, ancak, bir yaratıyoryeniIEnumerable nesne (belirsiz tür), numaralandırılmış ne var ki, eski tüm öğeleri, artı kendi bazı sağlayacaktır. Bunun için Enumerable.Concat kullanın:

 items = items.Concat(new[] { "foo" });

Budeğil değiştirmek dizi nesne(diziler için yerleştirin öğeleri, her neyse) olamaz. Ama dizideki tüm öğeleri olacak yeni bir nesne oluşturur ve sonra "". Foo Ayrıca, yeni bir nesnedizideki değişiklikleri izlemeksen sıralamak zaman (yani, mevcut nesne değerleri görürsünüz).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FASHTAG

    FASHTAG

    5 EYLÜL 2012
  • SPBedition

    SPBedition

    24 HAZİRAN 2013
  • Top Gear

    Top Gear

    27 Mart 2006