Aracılığıyla paylaş


Nesne ve koleksiyon Başlatıcı (C# Programlama Kılavuzu)

Nesne başlatıcıları değerler herhangi bir erişilebilir alanları veya nesnenin özelliklerini oluşturma sırasında açıkça bir oluşturucuyu çağırmak zorunda kalmadan atamak sağlar.Aşağıdaki örnek, adlandırılmış bir türü ile nesne Başlatıcısı nasıl gösterir Cat.Otomatik gerçeklenen özellikler kullanımına dikkat edin Cat sınıf.Daha fazla bilgi için bkz. Otomatik uygulanan özellikler (C# Programlama Kılavuzu).

class Cat
{
    // Auto-implemented properties.
    public int Age { get; set; }
    public string Name { get; set; }
}
Cat cat = new Cat { Age = 10, Name = "Fluffy" };

Anonim türler ile nesne başlatıcıları

Nesne başlatıcıları herhangi bir bağlamda kullanılabilir olsa da, bunlar özellikle kullanışlı LINQ sorgu ifadelerini.Sorgu ifadeleri sık kullanımını olun Anonim türler, hangi sadece başlatılmış bir nesne Başlatıcısı kullanarak aşağıdaki bildiriminde gösterildiği gibi.

var pet = new { Age = 10, Name = "Fluffy" };

Anonim türler etkinleştirmek select yan tümcesinde bir LINQ sorgu ifade özgün dizideki nesnelerin içine nesneleri, değer ve Şekil orijinalden farklı olabilir dönüştürmek için.Bir dizideki her nesne bilgileri yalnızca bir parçasını depolamak istiyorsanız bu yararlıdır.Aşağıdaki örnekte, yaptığınızı varsayar bir product nesnesi (p) birçok alanları ve yöntemleri içerir ve yalnızca nesneleri dizisini oluşturma ilgilenen olduğunuzu ürün adı ve birim fiyatı içerir.

var productInfos =
    from p in products
    select new { p.ProductName, p.UnitPrice };

Bu sorgu yürütüldüğünde, productInfos değişken bir dizi erişilebilir nesneleri içeren bir foreach deyimi aşağıdaki örnekte gösterildiği gibi:

foreach(var p in productInfos){...}

Yeni anonim tür her nesne, özgün nesne özellikleri veya alanlar aynı adları alacak iki ortak özellikleri vardır.Bir anonim tür oluştururken bir alan da yeniden adlandırabilirsiniz; Aşağıdaki örnek yeniden adlandırır UnitPrice alanı Price.

select new {p.ProductName, Price = p.UnitPrice};

Nesne başlatıcıları null yapılabilir türler ile

Nesne başlatıcısı bir NULL yapı ile kullanmak için bir derleme zamanı hatası var.

Koleksiyon başlatıcıları

Koleksiyon başlatıcıları uygulayan bir koleksiyon sınıfı başlattığınızda bir veya daha fazla öğe başlatıcıları belirtmenize olanak IEnumerable.Öğe başlatıcıları, basit bir değer, bir deyim veya nesne Başlatıcısı olabilir.Bir koleksiyon başlatıcıyı kullanarak, birden fazla belirtmek zorunda değilsiniz Add kaynak kodunda; sınıf yöntemi Derleyici çağrıları ekler.

Aşağıdaki örnekler, iki basit koleksiyon başlatıcıları gösterir:

List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<int> digits2 = new List<int> { 0 + 1, 12 % 3, MakeInt() };

Aşağıdaki koleksiyon başlatıcıyı nesne başlatıcıları nesnelerin başlatmak için kullandığı Cat bir önceki örnekte tanımlanan sınıf.Tek tek nesne başlatıcıları teller içinde ve virgülle ayrılmış unutmayın.

List<Cat> cats = new List<Cat>
{
    new Cat(){ Name = "Sylvester", Age=8 },
    new Cat(){ Name = "Whiskers", Age=2 },
    new Cat(){ Name = "Sasha", Age=14 }
};

Belirtebileceğiniz null bir koleksiyon başlatıcıyı bir öğe olarak, koleksiyon Add yöntemi sağlar.

List<Cat> moreCats = new List<Cat>
{
    new Cat(){ Name = "Furrytail", Age=5 },
    new Cat(){ Name = "Peaches", Age=4 },
    null
};

Örnek

// The following code consolidates examples from the topic.
class ObjInitializers
{
    class Cat
    {
        // Auto-implemented properties.
        public int Age { get; set; }
        public string Name { get; set; }
    }

    static void Main()
    {
        Cat cat = new Cat { Age = 10, Name = "Fluffy" };

        List<Cat> cats = new List<Cat>
        {
            new Cat(){ Name = "Sylvester", Age=8 },
            new Cat(){ Name = "Whiskers", Age=2 },
            new Cat(){ Name = "Sasha", Age=14 }
        };

        List<Cat> moreCats = new List<Cat>
        {
            new Cat(){ Name = "Furrytail", Age=5 },
            new Cat(){ Name = "Peaches", Age=4 },
            null
        };

        // Display results.
        System.Console.WriteLine(cat.Name);

        foreach (Cat c in cats)
            System.Console.WriteLine(c.Name);

        foreach (Cat c in moreCats)
            if (c != null)
                System.Console.WriteLine(c.Name);
            else
                System.Console.WriteLine("List element has null value.");
    }
    // Output:
    //Fluffy
    //Sylvester
    //Whiskers
    //Sasha
    //Furrytail
    //Peaches
    //List element has null value.
}

Ayrıca bkz.

Başvuru

Anonim türleri (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu

LINQ sorgu ifadelerini (C# Programlama Kılavuzu)