Bagikan melalui


Kelebihan Muatan Prosedur (Visual Basic)

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, , Shareddan Static

    • Nama parameter dan nama jenis parameter

    • Jenis batasan parameter (untuk prosedur generik)

    • Kata kunci pengubah parameter, seperti ByRef dan Optional

    • 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