Bagikan melalui


Melewati Argumen berdasarkan Posisi dan Nama (Visual Basic)

Saat memanggil prosedur Sub atau Function, Anda dapat meneruskan argumen berdasarkan posisi — dalam urutan muncul dalam definisi prosedur — atau Anda dapat meneruskannya berdasarkan nama, tanpa memperhatikan posisi.

Saat meneruskan argumen berdasarkan nama, Anda menentukan nama argumen yang dinyatakan diikuti dengan titik dua dan tanda sama dengan (:=), diikuti dengan nilai argumen. Anda dapat memberikan argumen bernama dalam urutan apa pun.

Misalnya, prosedur Sub berikut mengambil tiga argumen:

Public Class StudentInfo
    Shared Sub Display(name As String,
                Optional age As Short = 0,
                Optional birth As Date = #1/1/2000#)

        Console.WriteLine($"Name = {name}; age = {age}; birth date = {birth:d}")
    End Sub
End Class

Ketika Anda menyebut prosedur ini, Anda dapat memberikan argumen berdasarkan posisi, berdasarkan nama, atau dengan menggunakan campuran keduanya.

Meneruskan Argumen berdasarkan Posisi

Anda dapat memanggil metode Display dengan argumen yang diteruskan oleh posisi dan dibatasi oleh koma, seperti yang ditunjukkan dalam contoh berikut:

StudentInfo.Display("Mary", 19, #9/21/1998#)

Jika Anda menghilangkan argumen opsional dalam daftar argumen posisi, Anda harus memastikannya dengan koma. Contoh berikut memanggil metode Display tanpa argumen age:

StudentInfo.Display("Mary",, #9/21/1998#)

Meneruskan Argumen berdasarkan Nama

Atau, Anda dapat memanggil Display dengan argumen yang diteruskan berdasarkan nama, juga dibatasi oleh koma, seperti yang ditunjukkan dalam contoh berikut:

StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")

Menyampaikan argumen dengan nama dengan cara ini sangat berguna ketika Anda memanggil prosedur yang memiliki lebih dari satu argumen opsional. Jika Anda memberikan argumen berdasarkan nama, Anda tidak perlu menggunakan koma berturut-turut untuk menunjukkan argumen posisi yang hilang. Melewati argumen berdasarkan nama juga membuatnya lebih mudah untuk melacak argumen mana yang Anda lewati dan mana yang Anda hilangkan.

Mencampur Argumen berdasarkan Posisi dan Nama

Anda dapat memberikan argumen baik berdasarkan posisi maupun nama dalam satu panggilan prosedur, seperti yang ditunjukkan dalam contoh berikut:

StudentInfo.Display("Mary", birth:=#9/21/1998#)

Dalam contoh sebelumnya, tidak ada koma tambahan yang diperlukan untuk memastikan argumen age yang dihilangkan, karena birth diteruskan berdasarkan nama.

Dalam versi Visual Basic sebelum 15.5, ketika Anda memberikan argumen dengan campuran posisi dan nama, argumen posisi harus didahulukan semua. Setelah Anda memberikan argumen berdasarkan nama, argumen yang tersisa harus diteruskan berdasarkan nama semuanya. Misalnya, panggilan berikut ke metode Display menampilkan kesalahan kompiler BC30241: Argumen bernama yang diharapkan.

StudentInfo.Display("Mary", age:=19, #9/21/1998#)

Dimulai dengan Visual Basic 15.5, argumen posisi dapat mengikuti argumen bernama jika argumen posisi akhir berada dalam posisi yang benar. Jika dikompilasi di bawah Visual Basic 15.5, panggilan sebelumnya ke metode Display berhasil dikompilasi dan tidak lagi menghasilkan kesalahan kompiler BC30241.

Kemampuan untuk mencampur dan mencocokkan argumen bernama dan posisi dalam urutan apa pun sangat berguna ketika Anda ingin menggunakan argumen bernama untuk membuat kode Anda lebih mudah dibaca. Misalnya, konstruktor kelas Person berikut memerlukan dua argumen jenis Person, yang keduanya dapat berupa Nothing.

Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)

Menggunakan argumen bernama dan posisi campuran membantu membuat memperjelas niat kode ketika nilai argumen father dan mother adalah Nothing:

Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)

Untuk mengikuti argumen posisi dengan argumen bernama, Anda harus menambahkan elemen berikut ke file proyek Visual Basic (*.vbproj) Anda:

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Untuk informasi selengkapnya, lihat pengaturan versi bahasa Visual Basic.

Pembatasan Penyediaan Argumen berdasarkan Nama

Anda tidak dapat meneruskan argumen berdasarkan nama untuk menghindari memasukkan argumen yang diperlukan. Anda hanya dapat menghilangkan argumen opsional.

Anda tidak dapat meneruskan array parameter berdasarkan nama. Ini karena ketika Anda memanggil prosedur, Anda menyediakan jumlah argumen yang dipisahkan koma yang tidak terbatas untuk array parameter, dan kompiler tidak dapat mengaitkan lebih dari satu argumen dengan satu nama.

Lihat juga