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

  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010