Bagikan melalui


Meneruskan Argumen berdasarkan Posisi dan berdasarkan Nama (Visual Basic)

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.

Lihat juga