Bagikan melalui


Array Parameter (Visual Basic)

Biasanya, Anda tidak dapat memanggil prosedur dengan lebih banyak argumen daripada yang ditentukan deklarasi prosedur. Saat Anda memerlukan jumlah argumen yang tidak terbatas, Anda dapat mendeklarasikan array parameter, yang memungkinkan prosedur untuk menerima array nilai untuk parameter. Anda tidak perlu mengetahui jumlah elemen dalam array parameter saat Anda menentukan prosedur. Ukuran array ditentukan secara individual oleh setiap panggilan ke prosedur.

Mendeklarasikan ParamArray

Anda menggunakan kata kunci ParamArray untuk menunjukkan array parameter dalam daftar parameter. Aturan berikut ini akan berlaku:

  • Prosedur hanya dapat menentukan satu array parameter, dan harus berupa parameter terakhir dalam penentuan prosedur.

  • Array parameter harus diteruskan menurut nilai. Merupakan praktik pemrograman yang baik untuk secara eksplisit menyertakan kata kunci ByVal dalam penentuan prosedur.

  • Array parameter secara otomatis opsional. Nilai defaultnya adalah array satu dimensi kosong dari jenis elemen array parameter.

  • Semua parameter yang mendahului array parameter harus diperlukan. Array parameter harus menjadi satu-satunya parameter opsional.

Memanggil ParamArray

Saat Anda memanggil prosedur yang menentukan array parameter, Anda dapat menyediakan argumen dengan salah satu cara berikut:

  • Tidak ada — artinya, Anda dapat menghilangkan argumen ParamArray. Dalam hal ini, array kosong diteruskan ke prosedur. Jika Anda secara eksplisit meneruskan kata kunci Tidak ada, array null diteruskan ke prosedur dan dapat mengakibatkan NullReferenceException jika prosedur yang dipanggil tidak memeriksa kondisi ini.

  • Daftar jumlah argumen arbitrer, dipisahkan oleh koma. Jenis data dari setiap argumen harus secara implisit dapat dikonversi ke jenis elemen ParamArray.

  • Array dengan jenis elemen yang sama dengan jenis elemen array parameter.

Dalam semua kasus, kode dalam prosedur memperlakukan array parameter sebagai array satu dimensi dengan elemen jenis data yang sama dengan jenis data ParamArray.

Penting

Setiap kali Anda menghadapi array yang dapat sangat besar, ada risiko menjalankan kapasitas internal aplikasi Anda secara berlebihan. Jika Anda menerima array parameter, Anda harus menguji ukuran array yang diteruskan kode panggilan kepadanya. Ambil langkah-langkah yang tepat jika terlalu besar untuk aplikasi Anda. Untuk informasi selengkapnya, lihat Array.

Contoh

Contoh berikut menentukan dan memanggil fungsi calcSum. Pengubah ParamArray untuk parameter args memungkinkan fungsi untuk menerima jumlah variabel argumen.

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

Contoh berikut menentukan prosedur dengan array parameter, dan menghasilkan nilai semua elemen array yang diteruskan ke array parameter.

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)

Lihat juga