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.
Kelebihan beban prosedur berarti menentukannya dalam beberapa versi, menggunakan nama yang sama tetapi daftar parameter yang berbeda. Tujuan 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 berlebih, aturan berikut berlaku:
Nama yang Sama. Setiap versi yang kelebihan beban harus menggunakan nama prosedur yang sama.
Tanda Tangan Yang Berbeda. Setiap versi yang kelebihan beban harus berbeda dari semua versi kelebihan beban lainnya dalam setidaknya salah satu hal berikut:
Jumlah parameter
Urutan parameter
Jenis-jenis data dari parameter-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, pengkompilasi menggunakan tanda tangan untuk memeriksa apakah panggilan cocok dengan definisi dengan benar.
Item Bukan Bagian dari Tanda Tangan. Anda tidak dapat membebani prosedur tanpa memvariasi tanda tangan. Secara khusus, Anda tidak dapat membebani prosedur dengan hanya bervariasi satu atau beberapa item berikut:
Kata kunci pengubah prosedur, seperti
Public
, ,Shared
danStatic
Nama parameter dan nama jenis parameter
Jenis batasan parameter (untuk prosedur generik)
Kata kunci pengubah parameter, seperti
ByRef
danOptional
Apakah itu mengembalikan suatu nilai
Jenis data dari nilai yang dikembalikan (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 yang kelebihan beban yang dibedakan dengan benar oleh tanda tangan mereka.
ArgumenLate-Bound. Jika Anda ingin meneruskan variabel objek terikat terlambat ke versi yang kelebihan beban, Anda harus mendeklarasikan parameter yang sesuai sebagai Object.
Beberapa Versi Prosedur
Misalkan Anda menulis Sub
prosedur untuk memposting transaksi terhadap saldo pelanggan, dan Anda ingin dapat merujuk ke pelanggan baik berdasarkan nama atau dengan nomor akun. Untuk mengakomodasi hal ini, Anda dapat menentukan dua prosedur berbeda Sub
, 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 dalam Decimal
atau Single
, Anda dapat menggunakan post
lebih lanjut untuk mendukung variasi ini. Jika Anda melakukan ini ke masing-masing kelebihan beban dalam contoh sebelumnya, Anda akan memiliki empat Sub
prosedur, semuanya dengan nama yang sama tetapi dengan empat tanda tangan yang berbeda.
Keuntungan Kelebihan Beban
Keuntungan dari kelebihan beban prosedur adalah dalam fleksibilitas panggilan. Untuk menggunakan prosedur yang post
dinyatakan 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 Kelebihan Beban
- Petunjuk: Membebani Sebuah Prosedur yang Mengambil Parameter Opsional
- Cara: Membebani Prosedur yang Mengambil Jumlah Parameter yang Tidak Terbatas
- Pertimbangan dalam Prosedur Kelebihan Beban
- Resolusi Kelebihan Beban
- Kelebihan Beban
- Jenis Generik di Visual Basic