Bagikan melalui


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

    • Nama parameter atau parameter jenis

    • Batasan parameter jenis (untuk prosedur generik)

    • Kata kunci modifikasi parameter, seperti ByRef dan Optional

    • 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