Aracılığıyla paylaş


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

Koleksiyon başlatıcıları , 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 kategorilerin listesi, ilk sayısal değer kümesi, gün veya ay adları gibi statik dizelerin listesi veya doğrulama için kullanılan durumlar listesi gibi coğrafi konumlar gibi bilinen bir değer kümesinden koleksiyon oluştururken yararlıdır.

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

Anahtar sözcüğünü From ve ardından küme ayraçlarını (){} kullanarak bir koleksiyon başlatıcısı tanımlarsınız. Bu, Diziler'de açıklanan dizi değişmez söz dizimine benzer. Aşağıdaki örneklerde koleksiyon oluşturmak için koleksiyon başlatıcılarını kullanmanın çeşitli yolları gösterilir.

' 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"}}

Not

C# ayrıca koleksiyon başlatıcıları sağlar. C# koleksiyon 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ı.

Syntax

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

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

veya Dictionary<TKey,TValue>gibi bir koleksiyon oluşturduğunuzda, aşağıdaki kodda gösterildiği gibi List<T> 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

Not

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 arabirimi uygulayan IEnumerable<T> veya sınıfı devralan CollectionBase sınıflar verilebilir. Belirtilen tür, aşağıdaki ölçütleri karşılayan bir Add yöntemi de kullanıma sunmalıdır.

  • 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.

  • Add 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 yöntem bulunmalıdır.

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

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ısı 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 Customer oluşturucuyla eşleşen parametreleri olan bir Add yöntemi varsa, sonraki bölümde açıklandığı gibi, yöntemin Add parametre değerlerini 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 yöntem oluşturma Add örneği için bkz . Nasıl yapılır: Koleksiyon Başlatıcısı Tarafından Kullanılan Uzantı Ekleme 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ı İç İç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ına iç içe yerleştirebilirsiniz. Yöntemine Add geçirilen değerler, dizi değişmez değeri veya koleksiyon başlatıcıda yapacağınız gibi virgülle ayrılıp ayraç (){} içine 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öntemine Add bağımsız değişken olarak geçirilir. Örneğin, aşağıdaki kod örneği anahtarların türünde ve değerlerin türünde Integer olduğu Stringbir Dictionary<TKey,TValue> oluşturur. İç içe değer listelerinin her biri için yöntemiyle AddDictionaryeşleştirilir.

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

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

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

Yalnızca ilk iç içe yerleştirme düzeyindeki iç içe değer listeleri koleksiyon türü için yöntemine Add gönderilir. daha derin iç içe yerleştirme düzeyleri dizi değişmez değerleri olarak kabul edilir ve iç içe değer listeleri herhangi bir koleksiyonun yöntemiyle eşleşmez Add .

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

Ayrıca bkz.