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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk