Bagikan melalui


Parameter Opsional (Visual Basic)

Anda dapat menentukan bahwa parameter prosedur bersifat opsional dan tidak ada argumen yang harus disediakan untuk itu ketika prosedur dipanggil. Parameter opsional ditunjukkan oleh Optional kata kunci dalam definisi prosedur. Aturan berikut 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 menyediakan argumen. 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 posisinya. Contoh panggilan 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 yang diperlukan dan dua parameter opsional.

Panggilan pertama untuk MsgBox memasok ketiga argumen dalam urutan yang MsgBox menentukannya. Panggilan kedua hanya menyediakan argumen yang diperlukan. Panggilan ketiga dan keempat menyediakan argumen pertama dan ketiga. Panggilan ketiga melakukan ini berdasarkan posisi, dan panggilan keempat melakukannya berdasarkan 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 waktu proses apakah argumen tertentu telah dihilangkan atau kode panggilan telah secara eksplisit menyediakan nilai default. Jika Anda perlu membuat perbedaan ini, Anda dapat menetapkan nilai yang tidak mungkin sebagai default. Prosedur berikut menentukan parameter officeopsional , dan pengujian untuk nilai defaultnya, 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 ini bukan nilai yang diharapkan untuk argumen.

Parameter Opsional dan Kelebihan Beban

Cara lain untuk menentukan prosedur dengan parameter opsional adalah dengan menggunakan kelebihan beban. Jika Anda memiliki satu parameter opsional, Anda dapat menentukan dua versi prosedur yang kelebihan beban, satu menerima parameter dan satu tanpanya. Pendekatan ini menjadi lebih rumit saat jumlah parameter opsional meningkat. Namun, keuntungannya adalah Anda dapat benar-benar yakin apakah program panggilan menyediakan setiap argumen opsional.

Lihat juga