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

  • iBand IguJoo

    iBand IguJoo

    25 AĞUSTOS 2006
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • KRQE

    KRQE

    6 AĞUSTOS 2007