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 calcSumtanı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)

Ayrıca bkz.