SORU
15 NİSAN 2009, ÇARŞAMBA


Genel başlatılıyor.C listesinde#

C# ben bir liste aşağıdaki sözdizimini kullanarak başlatılamıyor.

List<int> intList= new List<int>() { 1, 2, 3 };

{} sözdizimi nasıl çalıştığını, ve eğer bir isim varsa bilmek isterim. * *10, diyebilirsiniz bir alan bir kurucusu yoktur.

List<int> intList= new List<int>(new int[]{ 1, 2, 3 });

Daha fazla gibi görünüyor "standart". Liste için varsayılan kurucuyu ben ölüme gidişini ben sadece bakın

this._items = Array.Empty;

Bunu yapmak mümkün olmak istiyorum.

CustomClass abc = new CustomClass() {1, 2, 3};

1, 2, 3 listeyi kullanabilir. Nasıl oluyor bu iş?

Güncelleme

Jon Skeet yanıtladı

Bu parametresiz arıyor yapıcı, ve sonra Ekle arama:

> List<int> tmp = new List<int>();
> tmp.Add(1); tmp.Add(2); tmp.Add(3);
> List<int> intList = tmp;

Ne demek olduğunu anladım. Nasıl olduğunu bilmek istiyorum. Nasıl bir sözdizimi yöntemi Ekleyin aramayı biliyor mu?

Güncelleme

Jon Skeet bir cevap kabul etmeyi biliyorum. Ama, dizeleri ve değer vermez ile örnek müthiş. Ayrıca çok yararlı MSDN sayfası:

CEVAP
15 NİSAN 2009, ÇARŞAMBA


Bu bir denirkoleksiyon başlatıcı. Parametresiz kurucu arıyor, ve sonra Ekle arıyor:

List<int> tmp = new List<int>();
tmp.Add(1);
tmp.Add(2);
tmp.Add(3);
List<int> intList = tmp;

Bu tür gereksinimleri vardır:

  • IEnumerable bunu uygular
  • Sağladığınız için uygun Add aşırı yükleme var. Birden çok parametre ile hangi durumda derleyici Add bir yöntem arar parantez içinde birden çok bağımsız değişken, tedarik edebilirsiniz.

Örneğin:

public class DummyCollection : IEnumerable
{
    IEnumerator IEnumerable.GetEnumerator()
    {
        throw new InvalidOperationException("Not a real collection!");
    }

    public void Add(string x)
    {
        Console.WriteLine("Called Add(string)");
    }

    public void Add(int x, int y)
    {
        Console.WriteLine("Called Add(int, int)");
    }
}

Sonra da kullanabilirsiniz:

DummyCollection foo = new DummyCollection
{
    "Hi",
    "There",
    { 1, 2 }
};

(Tabii ki, normalde IEnumerable doğru şekilde uygulamak için toplama...) isterdim

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • pilslajt

    pilslajt

    20 HAZİRAN 2008
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007