Parametre Dizileri (Visual Basic)
Genellikle, yordam bildiriminin belirttiğinden daha fazla bağımsız değişken içeren bir yordamı çağıramazsınız. Süresiz sayıda bağımsız değişkene ihtiyacınız olduğunda, bir parametre dizisi bildirebilirsiniz. Bu, bir yordamın bir parametre için değer dizisini kabul etmesini sağlar. Yordamı tanımlarken parametre dizisindeki öğe sayısını bilmeniz gerekmez. Dizi boyutu, yordama yapılan her çağrı tarafından ayrı ayrı belirlenir.
ParamArray bildirme
Parametre listesindeki bir parametre dizisini belirtmek için ParamArray anahtar sözcüğünü kullanırsınız. Geçerli olan kurallar şunlardır:
Bir yordam yalnızca bir parametre dizisi tanımlayabilir ve yordam tanımındaki son parametre olmalıdır.
Parametre dizisi değere göre geçirilmelidir. ByVal anahtar sözcüğünü yordam tanımına açıkça eklemek iyi bir programlama uygulamasıdır.
Parametre dizisi otomatik olarak isteğe bağlıdır. Varsayılan değeri, parametre dizisinin öğe türünün boş bir tek boyutlu dizisidir.
Parametre dizisini önceki tüm parametreler gerekli olmalıdır. Parametre dizisi isteğe bağlı tek parametre olmalıdır.
ParamArray Çağırma
Parametre dizisini tanımlayan bir yordamı çağırdığınızda, bağımsız değişkeni aşağıdaki yollardan herhangi biriyle sağlayabilirsiniz:
Hiçbir şey, yani ParamArray bağımsız değişkenini atlayabilirsiniz. Bu durumda, yordama boş bir dizi geçirilir. Nothing anahtar sözcüğünü açıkça geçirirseniz, yordama null bir dizi geçirilir ve çağrılan yordam bu koşulu denetlemezse NullReferenceException ile sonuçlanabilir.
Virgülle ayrılmış rastgele sayıda bağımsız değişkenin listesi. Her bağımsız değişkenin veri türü, öğe türüne
ParamArray
örtük olarak dönüştürülebilir olmalıdır.Parametre dizisinin öğe türüyle aynı öğe türüne sahip bir dizi.
Her durumda, yordamdaki kod parametre dizisini veri türüyle aynı veri türündeki öğelerle tek boyutlu bir dizi olarak ParamArray
ele alır.
Önemli
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 ona iletmiş olduğu dizinin boyutunu test etmelisiniz. Uygulamanız için çok büyükse uygun adımları uygulayın. Daha fazla bilgi için bkz . Diziler.
Örnek
Aşağıdaki örnek işlevini calcSum
tanımlar ve çağırır. ParamArray
parametresinin args
değiştiricisi işlevin değişken sayıda bağımsız değişkeni kabul etmesine olanak tanır.
Module Module1
Sub Main()
' In the following function call, CalcSum's local variables
' are assigned the following values: args(0) = 4, args(1) = 3,
' and so on. The displayed sum is 10.
Dim returnedValue As Double = CalcSum(4, 3, 2, 1)
Console.WriteLine("Sum: " & returnedValue)
' Parameter args accepts zero or more arguments. The sum
' displayed by the following statements is 0.
returnedValue = CalcSum()
Console.WriteLine("Sum: " & returnedValue)
End Sub
Public Function CalcSum(ByVal ParamArray args() As Double) As Double
CalcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
CalcSum += args(i)
Next i
End Function
End Module
Aşağıdaki örnek, parametre dizisine sahip bir yordam tanımlar ve parametre dizisine geçirilen tüm dizi öğelerinin değerlerini verir.
Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
' Use UBound to determine largest subscript of the array.
For i As Integer = 0 To UBound(scores, 1)
Debug.WriteLine("Score " & i & ": " & scores(i))
Next i
End Sub
Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)