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

  • Autocar

    Autocar

    11 Mart 2006
  • HER0R

    HER0R

    16 Aralık 2007
  • Ownage Pranks

    Ownage Prank

    13 AĞUSTOS 2007