Nasıl yapılır: Belirsiz Sayıda Parametre İsteyen Bir Yordamı Aşırı Yükleme (Visual Basic)

Bir yordamın ParamArray parametresi varsa, parametre dizisi için tek boyutlu bir dizi alan aşırı yüklenmiş bir sürüm tanımlayamazsınız. Daha fazla bilgi için, Aşırı Yükleme Yordamlarındaki Önemli Noktalar bölümünde yer alan "ParamArray Parametresi için Örtük Aşırı Yüklemeler" bölümüne bakın.

Değişken sayıda parametre alan bir yordamı aşırı yüklemek için

  1. Yordamın ve çağrı kodu mantığının aşırı yüklenmiş sürümlerden bir ParamArray parametreden daha fazla yararlandığını doğrulayın. Aşırı Yükleme Yordamlarında Dikkat Edilmesi Gerekenler bölümünde "Aşırı Yüklemeler ve ParamArrays" bölümüne bakın.

  2. Parametre listesinin değişken bölümünde yordamın hangi sayıda sağlanan değeri kabul etmesi gerektiğini belirleyin. Bu, değer içermeyen bir olayı içerebilir ve tek boyutlu tek boyutlu bir diziyi içerebilir.

  3. Sağlanan her kabul edilebilir değer sayısı için, karşılık gelen parametre listesini tanımlayan bir Sub veya Function bildirim deyimi yazın. Bu aşırı yüklenmiş sürümde veya anahtar sözcüğünü ParamArray kullanmayınOptional.

  4. Her bildirimde or Function anahtar sözcüğünden Sub önce Overloads anahtar sözcüğünü yazın.

  5. Her bildirimin ardından, çağıran kod bu bildirimin parametre listesine karşılık gelen değerleri sağladığında yürütülmesi gereken yordam kodunu yazın.

  6. Her yordamı uygun şekilde veya End Function deyimiyle End Sub sonlandırın.

Örnek

Aşağıdaki örnekte ParamArray parametresiyle tanımlanan bir yordam ve ardından eşdeğer bir aşırı yüklenmiş yordam kümesi gösterilmektedir.

Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.

Böyle bir yordamı, parametre dizisi için tek boyutlu bir dizi alan bir parametre listesiyle aşırı yükleyemezsiniz. Ancak, diğer örtük aşırı yüklemelerin imzalarını kullanabilirsiniz. Aşağıdaki bildirimler bunu gösterir.

' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)

Aşırı yüklenmiş sürümlerdeki kodun, çağıran kodun parametre için ParamArray bir veya daha fazla değer sağlayıp sağlamadığını veya varsa kaç tane olduğunu test etmek zorunda değildir. Visual Basic, denetimi çağıran bağımsız değişken listesiyle eşleşen sürüme geçirir.

Kodu derleme

Parametresi olan bir ParamArray yordam, aşırı yüklenmiş bir sürüm kümesine eşdeğer olduğundan, bu tür bir yordamı bu örtük aşırı yüklemelerden herhangi birine karşılık gelen bir parametre listesiyle aşırı yükleyemezsiniz. Daha fazla bilgi için bkz . Yordamları Aşırı Yükleme konusunda dikkat edilmesi gerekenler.

.NET Framework Güvenliği

Süresiz olarak büyük olabilecek bir diziyle her uğraştığınızda, uygulamanızın bazı iç kapasitesinin aşılması riski vardır. Parametre dizisini kabul ederseniz, çağıran kodun geçirilen dizisinin uzunluğunu test etmeli ve uygulamanız için çok büyükse uygun adımları atmalısınız.

Ayrıca bkz.