Megosztás a következőn keresztül:


Paramétertömbök (Visual Basic)

Általában nem hívhat meg több argumentumot tartalmazó eljárást, mint amennyit az eljárásdeklaráció megad. Ha határozatlan számú argumentumra van szüksége, deklarálhat egy paramétertömböt, amely lehetővé teszi, hogy egy eljárás elfogadjon egy paraméterhez tartozó értéktömböt. Az eljárás meghatározásakor nem kell tudnia a paramétertömb elemeinek számát. A tömb méretét az eljárás minden egyes hívása egyenként határozza meg.

ParamArray deklarálása

A ParamArray kulcsszóval egy paramétertömböt jelölhet a paraméterlistában. Az alábbi szabályokat kell betartani:

  • Egy eljárás csak egy paramétertömböt definiálhat, és az eljárásdefiníció utolsó paraméterének kell lennie.

  • A paramétertömböt érték szerint kell átadni. Jó programozási gyakorlat, ha explicit módon belefoglalja a ByVal kulcsszót az eljárásdefinícióba.

  • A paramétertömb automatikusan nem kötelező. Az alapértelmezett érték a paramétertömb elemtípusának üres egydimenziós tömbje.

  • A paramétertömb előtti összes paramétert kötelező megadni. A paramétertömbnek kell lennie az egyetlen választható paraméternek.

ParamArray meghívása

Amikor egy paramétertömböt meghatározó eljárást hív meg, az argumentumot az alábbi módok egyikével adhatja meg:

  • Semmi – vagyis kihagyhatja a ParamArray argumentumot. Ebben az esetben a függvény egy üres tömböt ad át az eljárásnak. Ha explicit módon adja át a Semmi kulcsszót, a függvény egy null tömböt ad át az eljárásnak, és NullReferenceException értéket eredményezhet, ha a hívott eljárás nem ellenőrzi ezt a feltételt.

  • Tetszőleges számú argumentum listája vesszővel elválasztva. Az egyes argumentumok adattípusának implicit módon átalakíthatónak kell lennie az ParamArray elemtípusra.

  • Olyan tömb, amelynek elemtípusa megegyezik a paramétertömb elemtípusával.

Az eljárásban szereplő kód minden esetben egydimenziós tömbként kezeli a paramétertömböt az adattípussal azonos adattípusú ParamArray elemekkel.

Fontos

Ha határozatlan ideig nagy tömböt használ, fennáll annak a veszélye, hogy az alkalmazás belső kapacitását túlfuttatja. Ha elfogad egy paramétertömböt, tesztelje annak a tömbnek a méretét, amelyet a hívó kód átadott neki. Ha túl nagy az alkalmazás számára, végezze el a megfelelő lépéseket. További információ: Tömbök.

Példa

Az alábbi példa a függvényt calcSumdefiniálja és meghívja. A ParamArray paraméter args módosítója lehetővé teszi, hogy a függvény változó számú argumentumot fogadjon el.

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

Az alábbi példa egy paramétertömböt tartalmazó eljárást határoz meg, és a paramétertömbnek átadott összes tömbelem értékeit adja ki.

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)

Lásd még