Kelebihan Beban Prosedur (Visual Basic)
Kelebihan beban prosedur berarti menentukannya dalam beberapa versi, menggunakan nama yang sama tetapi daftar parameter yang berbeda. Tujuan dari kelebihan beban adalah untuk menentukan beberapa versi prosedur yang terkait erat tanpa harus membedakannya berdasarkan nama. Anda melakukan ini dengan memvariasikan daftar parameter.
Aturan Kelebihan Beban
Saat Anda membebani prosedur, aturan berikut berlaku:
Nama yang Sama. Setiap versi yang kelebihan beban harus menggunakan nama prosedur yang sama.
Tanda Tangan yang Berbeda. Setiap versi kelebihan beban harus berbeda dari semua versi kelebihan beban lainnya dalam setidaknya satu dari hal-hal berikut:
Jumlah parameter
Urutan parameter
Jenis data parameter
Jumlah parameter jenis (untuk prosedur generik)
Jenis pengembalian (hanya untuk operator konversi)
Bersama dengan nama prosedur, item sebelumnya secara kolektif disebut tanda tangan prosedur. Saat Anda memanggil prosedur kelebihan beban, kompiler menggunakan tanda tangan untuk memeriksa apakah panggilan sesuai dengan definisi dengan benar.
Item Bukan Bagian dari Tanda Tangan. Anda tidak dapat membebani prosedur tanpa memvariasikan tanda tangan. Secara khusus, Anda tidak dapat membebani prosedur dengan memvariasikan hanya satu atau lebih dari item berikut:
Kata kunci pengubah prosedur, seperti
Public
,Shared
, danStatic
Nama parameter atau parameter jenis
Batasan parameter jenis (untuk prosedur generik)
Kata kunci modifikasi parameter, seperti
ByRef
danOptional
Apakah mengembalikan nilai
Jenis data dari nilai pengembalian (kecuali untuk operator konversi)
Item dalam daftar sebelumnya bukan bagian dari tanda tangan. Meskipun Anda tidak dapat menggunakannya untuk membedakan antara versi yang kelebihan beban, Anda dapat memvariasikannya di antara versi kelebihan beban yang dibedakan dengan benar dengan tanda tangan mereka.
Argumen Terikat Akhir. Jika Anda berniat untuk meneruskan variabel objek terikat akhir ke versi yang kelebihan beban, Anda harus mendeklarasikan parameter yang sesuai sebagai Object.
Beberapa Versi Prosedur
Misalkan Anda menulis prosedur Sub
untuk memposting transaksi terhadap saldo pelanggan, dan Anda ingin dapat merujuk ke pelanggan baik dengan nama atau nomor akun. Untuk mengakomodasi hal ini, Anda dapat menentukan dua prosedur Sub
yang berbeda, seperti dalam contoh berikut:
Sub postName(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Versi Kelebihan Beban
Alternatifnya adalah dengan membebani satu nama prosedur. Anda dapat menggunakan kata kunci Overloads untuk menentukan versi prosedur untuk setiap daftar parameter, sebagai berikut:
Overloads Sub post(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Kelebihan Beban Tambahan
Jika Anda juga ingin menerima jumlah transaksi baik dalam Decimal
atau Single
, Anda dapat membebani lebih lanjut post
untuk memungkinkan variasi ini. Jika Anda melakukan ini pada masing-masing kelebihan beban dalam contoh sebelumnya, Anda akan memiliki empat prosedur Sub
, semuanya dengan nama yang sama tetapi dengan empat tanda tangan yang berbeda.
Keuntungan dari Kelebihan Beban
Keuntungan dari kelebihan beban prosedur adalah fleksibilitas panggilan. Untuk menggunakan prosedur post
yang dideklarasikan dalam contoh sebelumnya, kode panggilan dapat memperoleh identifikasi pelanggan sebagai String
atau Integer
, lalu memanggil prosedur yang sama dalam kedua kasus. Contoh berikut mengilustrasikan langkah-langkah ini:
Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
accountNum = CInt(customer)
Call post(accountNum, amount)
Catch
Call post(customer, amount)
End Try
Lihat juga
- Prosedur
- Cara: Menentukan Beberapa Versi Prosedur
- Cara: Memanggil Prosedur Overload
- Cara: Membebani Prosedur yang Mengambil Parameter Opsional
- Cara: Membebani Prosedur yang Membutuhkan Jumlah Parameter Tidak Terbatas
- Pertimbangan dalam Prosedur Kelebihan Beban
- Resolusi Kelebihan Beban
- Kelebihan beban
- Jenis Generik di Visual Basic