Aracılığıyla paylaş


Koleksiyon Başlatıcıları (Visual Basic)

Koleksiyon başlatıcıları , bir koleksiyon oluşturmanızı ve ilk değer kümesiyle doldurmanızı sağlayan kısaltılmış bir söz dizimi sağlar. Koleksiyon başlatıcıları, menü seçenekleri veya kategorileri listesi, ilk sayısal değerler kümesi, gün veya ay adları gibi statik dizeler listesi veya doğrulama için kullanılan eyaletler listesi gibi coğrafi konumlar gibi bir dizi bilinen değerden koleksiyon oluştururken kullanışlıdır.

Koleksiyonlar hakkında daha fazla bilgi için bkz. Koleksiyonlar.

Bir koleksiyon başlatıcısını From anahtar sözcüğünü takip eden ({}) küme ayraçlarıyla tanımlarsınız. Bu, Diziler'de açıklanan dizi söz dizimiyle benzerdir. Aşağıdaki örneklerde koleksiyon oluşturmak için koleksiyon başlatıcılarını kullanmanın çeşitli yolları gösterilmektedir.

' Create an array of type String().
Dim winterMonths = {"December", "January", "February"}

' Create an array of type Integer()
Dim numbers = {1, 2, 3, 4, 5}

' Create a list of menu options. (Requires an extension method
' named Add for List(Of MenuOption)
Dim menuOptions = New List(Of MenuOption) From {{1, "Home"},
                                                {2, "Products"},
                                                {3, "News"},
                                                {4, "Contact Us"}}

Uyarı

C# ayrıca koleksiyon başlatıcıları sağlar. C# koleksiyonu başlatıcıları, Visual Basic koleksiyon başlatıcıları ile aynı işlevselliği sağlar. C# koleksiyonu başlatıcıları hakkında daha fazla bilgi için bkz. Nesne ve Koleksiyon Başlatıcıları.

Sözdizimi

Koleksiyon başlatıcısı, {} anahtar kelimesinden sonra, From ayraçları içine alınmış virgülle ayrılmış değerlerin bir listesinden oluşur, aşağıdaki kodda gösterildiği gibi.

Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}

veya List<T>gibi bir koleksiyon oluşturduğunuzda, aşağıdaki kodda gösterildiği gibi Dictionary<TKey,TValue> koleksiyon başlatıcıdan önce koleksiyon türünü sağlamanız gerekir.

Public Class AppMenu
    Public Property Items As List(Of String) =
        New List(Of String) From {"Home", "About", "Contact"}
End Class

Uyarı

Aynı koleksiyon nesnesini başlatmak için hem koleksiyon başlatıcıyı hem de nesne başlatıcıyı birleştiremezsiniz. Bir koleksiyon başlatıcıdaki nesneleri başlatmak için nesne başlatıcıları kullanabilirsiniz.

Koleksiyon Başlatıcı Kullanarak Koleksiyon Oluşturma

Koleksiyon başlatıcı kullanarak bir koleksiyon oluşturduğunuzda, koleksiyon başlatıcıda sağlanan her değer koleksiyonun uygun Add yöntemine geçirilir. Örneğin, bir koleksiyon başlatıcı kullanarak bir List<T> oluşturursanız, koleksiyon başlatıcıdaki her dize değeri yöntemine Add geçirilir. Koleksiyon başlatıcı kullanarak koleksiyon oluşturmak istiyorsanız, belirtilen tür geçerli bir koleksiyon türü olmalıdır. Geçerli koleksiyon türlerine örnek olarak, IEnumerable<T> arabirimini uygulayan veya CollectionBase sınıfını devralan sınıflar verilebilir. Belirtilen türün aşağıdaki ölçütleri karşılayan bir Add yöntemi de kullanıma sunması gerekir.

  • yöntemi, Add koleksiyon başlatıcısının çağrıldığı kapsamdan kullanılabilir olmalıdır. Koleksiyonun Add genel olmayan yöntemlerine erişilebilen bir senaryoda koleksiyon başlatıcısını kullanıyorsanız yöntemin genel olması gerekmez.

  • yöntemi, Add koleksiyon sınıfının bir örnek üyesi veya Shared üyesi ya da bir uzantı yöntemi olmalıdır.

  • Aşırı yükleme çözümleme kurallarına göre koleksiyon başlatıcıda sağlanan türlere göre eşleştirilebilen bir Add yöntem bulunmalıdır.

Örneğin, aşağıdaki kod örneği, bir koleksiyon başlatıcı kullanarak nasıl bir List(Of Customer) koleksiyonu oluşturulacağını göstermektedir. Kod çalıştırıldığında, her Customer nesne genel listenin yöntemine geçirilir Add(Customer) .

Dim customers = New List(Of Customer) From
    {
        New Customer("City Power & Light", "http://www.cpandl.com/"),
        New Customer("Wide World Importers", "http://www.wideworldimporters.com/"),
        New Customer("Lucerne Publishing", "http://www.lucernepublishing.com/")
    }

Aşağıdaki kod örneği, koleksiyon başlatıcı kullanmayan eşdeğer kodu gösterir.

Dim customers = New List(Of Customer) 
customers.Add(New Customer("City Power & Light", "http://www.cpandl.com/"))
customers.Add(New Customer("Wide World Importers", "http://www.wideworldimporters.com/"))
customers.Add(New Customer("Lucerne Publishing", "http://www.lucernepublishing.com/"))

Koleksiyonun nesnesi için Add oluşturucuyla eşleşen parametreleri olan bir Customer yöntemi varsa, sonraki bölümde açıklandığı gibi, yöntemin parametre değerlerini Add koleksiyon başlatıcıları içinde iç içe yerleştirebilirsiniz. Koleksiyonun böyle bir Add yöntemi yoksa, uzantı yöntemi olarak bir yöntem oluşturabilirsiniz. Bir koleksiyon için uzantı yöntemi olarak bir Add yöntemi oluşturmanın örneği için bkz. Nasıl yapılır: Koleksiyon Başlatıcısı Tarafından Kullanılan Ekleme Uzantı Yöntemi Oluşturma. Koleksiyon başlatıcı ile kullanılabilecek özel bir koleksiyon oluşturma örneği için bkz . Nasıl yapılır: Koleksiyon Başlatıcısı Tarafından Kullanılan Koleksiyon Oluşturma.

Koleksiyon Başlatıcılarını İç İçe Yerleştirme

Oluşturulan koleksiyon için bir yöntemin belirli bir aşırı yüklemesini tanımlamak için değerleri koleksiyon Add başlatıcısının içine yerleştirebilirsiniz. yöntemi Add için verilen değerler, bir dizi değişmez değeri veya koleksiyon başlatıcıda olduğu gibi virgülle ayrılmalı ve kıvrımlı parantez içinde alınmalıdır ({}).

İç içe değerleri kullanarak bir koleksiyon oluşturduğunuzda, iç içe değer listesinin her öğesi, öğe türleriyle eşleşen yönteme Add bağımsız değişken olarak geçirilir. Örneğin, aşağıdaki kod örneği, anahtarlara Dictionary<TKey,TValue> ve değerlere Integer türünde bir String oluşturur. İç içe değer listelerinin her biri, Add için Dictionary yöntemiyle eşleştirilir.

Dim days = New Dictionary(Of Integer, String) From
    {{0, "Sunday"}, {1, "Monday"}}

Önceki kod örneği aşağıdaki koda eşdeğerdir.

Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")

Koleksiyon türü için Add yöntemine sadece ilk düzeydeki iç içe yerleştirilmiş değer listeleri gönderilir. Daha derin iç içe yerleştirme düzeyleri, dizi sabitleri olarak değerlendirilir ve bu iç içe geçmiş değer listeleri, hiçbir koleksiyonun Add yöntemine uymaz.

Başlık Açıklama
Nasıl yapılır: Koleksiyon Başlatıcısı Tarafından Kullanılan Uzantı Ekleme Yöntemi Oluşturma Bir koleksiyonu koleksiyon başlatıcının değerleriyle doldurmak için kullanılabilecek adlı Add bir uzantı yönteminin nasıl oluşturulacağını gösterir.
Nasıl yapılır: Koleksiyon Başlatıcısı Tarafından Kullanılan Koleksiyon Oluşturma uygulayan Addbir koleksiyon sınıfına bir IEnumerable yöntem ekleyerek koleksiyon başlatıcısının kullanımını etkinleştirmeyi gösterir.

Ayrıca bakınız