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

  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • NPR

    NPR

    22 NİSAN 2006