Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat Anda memanggil Sub
atau Function
prosedur, Anda dapat meneruskan argumen berdasarkan posisi — dalam urutan muncul dalam definisi prosedur — atau Anda dapat meneruskannya berdasarkan nama, tanpa memperhatikan posisi.
Saat Anda meneruskan argumen berdasarkan nama, Anda menentukan nama argumen yang dideklarasikan diikuti oleh titik dua dan tanda sama dengan (:=
), diikuti oleh nilai argumen. Anda dapat menyediakan argumen bernama dalam urutan apa pun.
Misalnya, prosedur berikut Sub
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
Saat Anda memanggil prosedur ini, Anda dapat menyediakan argumen berdasarkan posisi, berdasarkan nama, atau dengan menggunakan campuran keduanya.
Mengoper Argumen berdasarkan Posisi
Anda dapat memanggil Display
sebagai metode dengan argumen yang diberikan sesuai urutan posisi dan dimisahkan oleh koma, seperti contoh berikut:
StudentInfo.Display("Mary", 19, #9/21/1998#)
Jika Anda menghilangkan argumen opsional dalam daftar argumen berurutan, Anda harus menggantinya dengan menggunakan koma. Contoh berikut memanggil Display
metode tanpa age
argumen:
StudentInfo.Display("Mary",, #9/21/1998#)
Meneruskan Argumen Berdasarkan Nama
Atau, Anda dapat memanggil Display
dengan argumen yang disebutkan berdasarkan nama, yang juga dipisahkan dengan koma, seperti yang ditunjukkan dalam contoh berikut.
StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")
Meneruskan argumen berdasarkan nama dengan cara ini sangat berguna ketika Anda memanggil prosedur yang memiliki lebih dari satu argumen opsional. Jika Anda menyediakan argumen berdasarkan nama, Anda tidak perlu menggunakan koma berturut-turut untuk menunjukkan argumen posisi yang hilang. Meneruskan argumen berdasarkan nama juga membuat Anda lebih mudah melacak argumen mana yang disertakan dan mana yang tidak disertakan.
Mencampur Argumen menurut Posisi dan berdasarkan Nama
Anda dapat memberikan argumen baik berdasarkan posisi maupun berdasarkan 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 menggantikan argumen yang dihilangkan age
, karena birth
diteruskan dengan menyebut namanya.
Dalam versi Visual Basic sebelum 15.5, saat Anda menyediakan argumen dengan campuran posisi dan nama, argumen posisi semua harus menjadi yang pertama. Setelah Anda memberikan argumen pertama dengan nama, semua argumen berikutnya juga harus diteruskan dengan cara yang sama. Misalnya, panggilan ke metode Display
berikut menampilkan kesalahan pengkompilasi BC30241: Argumen bernama diharapkan.
StudentInfo.Display("Mary", age:=19, #9/21/1998#)
Dimulai dengan Visual Basic 15.5, argumen posisi dapat mengikuti argumen bernama jika argumen posisi di bagian akhir berada pada posisi yang benar. Jika dikompilasi di bawah Visual Basic 15.5, panggilan sebelumnya ke Display
metode berhasil dikompilasi dan tidak lagi menghasilkan kesalahan kompilator 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 berikut Person
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 secara campuran membantu memperjelas niat kode ketika nilai dari argumen father
dan mother
adalah Nothing
.
Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)
Untuk mengikuti argumen posisional dengan argumen bernama, Anda harus menambahkan elemen berikut ke file proyek Visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Untuk informasi selengkapnya, lihat mengatur 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 melalui nama. Ini karena ketika Anda memanggil prosedur, Anda menyediakan jumlah argumen yang dipisahkan koma yang tidak terbatas untuk array parameter, dan pengkompilasi tidak dapat mengaitkan lebih dari satu argumen dengan satu nama.