Bagikan melalui


Parameter Opsional (Visual Basic)

Anda dapat menentukan bahwa parameter prosedur adalah opsional dan tidak ada argumen yang harus diberikan untuk prosedur saat prosedur dipanggil. Parameter opsional ditunjukkan oleh kata kunci Optional dalam definisi prosedur. Aturan berikut ini akan berlaku:

  • Setiap parameter opsional dalam definisi prosedur harus menentukan nilai default.

  • Nilai default untuk parameter opsional harus berupa ekspresi konstanta.

  • Setiap parameter yang mengikuti parameter opsional dalam definisi prosedur juga harus opsional.

Sintaks berikut menunjukkan deklarasi prosedur dengan parameter opsional:

Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

Prosedur Panggilan dengan Parameter Opsional

Saat Anda memanggil prosedur dengan parameter opsional, Anda dapat memilih apakah akan memberikan argumen atau tidak. Jika tidak, prosedur menggunakan nilai default yang dideklarasikan untuk parameter tersebut.

Saat Anda menghilangkan satu atau beberapa argumen opsional dalam daftar argumen, Anda menggunakan koma berturut-turut untuk menandai posisi argumen. Panggilan contoh berikut menyediakan argumen pertama dan keempat tetapi bukan argumen kedua atau ketiga:

Sub name(argument 1, , , argument 4)  

Contoh berikut membuat beberapa panggilan ke fungsi MsgBox. MsgBox memiliki satu parameter wajib dan dua parameter opsional.

Panggilan pertama ke MsgBox menyediakan ketiga argumen dalam urutan yang ditentukan MsgBox. Panggilan kedua hanya menyediakan argumen yang diperlukan. Panggilan ketiga dan keempat memberikan argumen pertama dan ketiga. Panggilan ketiga melakukan ini berdasarkan posisi, dan panggilan keempat melakukannya dengan nama.

MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")

Menentukan Apakah Argumen Opsional Ada

Prosedur tidak dapat mendeteksi pada saat durasi apakah argumen tertentu telah dihilangkan atau kode panggilan telah secara eksplisit memberikan nilai default. Jika Anda perlu membuat perbedaan ini, Anda dapat menetapkan nilai yang tidak mungkin sebagai default. Prosedur berikut menentukan parameter opsional office, dan menguji nilai default parameter, QJZ, untuk melihat apakah parameter tersebut telah dihilangkan dalam panggilan:

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

Jika parameter opsional adalah jenis referensi seperti String, Anda dapat menggunakan Nothing sebagai nilai default, asalkan hal ini bukan nilai yang diharapkan untuk argumen.

Parameter Opsional dan Overloading

Cara lain untuk menentukan prosedur dengan parameter opsional adalah dengan menggunakan overloading. Jika Anda memiliki satu parameter opsional, Anda dapat menentukan dua versi prosedur yang kelebihan beban, satu menerima parameter dan satu tanpa parameter. Pendekatan ini menjadi lebih rumit karena jumlah parameter opsional meningkat. Tetapi, keuntungan dari pendekatan ini adalah Anda dapat benar-benar yakin apakah program panggilan menyediakan setiap argumen opsional.

Lihat juga