Aracılığıyla paylaş


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

Bir prosedürü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. Yöntemin ve çağrı kodu mantığının, bir ParamArray parametresinden daha çok aşırı yüklenmiş sürümlerden yarar sağladığından emin olun. 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 durumu ve 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 ne Optional ne de ParamArray anahtar sözcüğünü kullanmayın.

  4. Her bildirimde, Sub veya Function anahtar sözcüğünden ö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 prosedürü uygun şekilde End Sub veya End Function deyimiyle 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.

Parametre dizisi için tek boyutlu bir dizi alan bir parametre listesiyle böyle bir prosedürü 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, kontrolü çağıran bağımsız değişken listesiyle eşleşen sürüme aktarır.

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ın Aşırı Yüklenmesinde Dikkat Edilmesi Gereken Hususlar.

.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. Bir parametre dizisini kabul ediyorsanız, çağıran kodun dizinin uzunluğunu kontrol etmeli ve bu uzunluk uygulamanız için çok büyükse uygun önlemleri almalısınız.

Ayrıca bakınız