Udostępnij za pośrednictwem


Przeciążanie procedury (Visual Basic)

Przeciążanie oznacza procedurę, zdefiniowanie jej w wielu wersjach, przy użyciu takiej samej nazwie, ale listy różnych parametrów.Celem przeciążenie jest zdefiniowanie kilku ściśle powiązanych wersje procedury bez konieczności odróżnić je według nazwy.W tym różne listy parametrów.

Przeciążanie zasady

Na przeciążenie procedurę, mają zastosowanie następujące zasady:

  • Nazwa tej samej.Każda wersja przeciążony, należy użyć nazwy tej samej procedury.

  • Inny podpis.Każda wersja przeciążony musi różnią się od wszystkich innych wersjach przeciążony w co najmniej jeden z następujących aspektach:

    • Liczba parametrów

    • Kolejność parametrów

    • Typy danych parametrów

    • Liczba parametrów typu (dla procedury generic)

    • Zwracany typ (tylko dla operatora konwersji)

    Wraz z nazwą procedury poprzednich elementów są nazywane podpisu procedury.Gdy wywołuje procedurę przeciążony kompilator użyto podpisu do sprawdzenia, czy wywołanie poprawnie odpowiada definicji.

  • Elementy nie część podpis.Procedura nie mogą przeciążać bez różnicowania podpis.W szczególności nie mogą przeciążać siebie procedurze poprzez różnicowanie tylko jeden lub więcej z następujących elementów:

    • Procedura modyfikator słowa kluczowe, takie jak Public, Shared, iStatic

    • Parametr lub typ nazwy parametrów

    • Ograniczenia parametru typu (dla procedury generic)

    • Parametr modyfikator słowa kluczowe, takie jak ByRef iOptional

    • Zwraca wartość

    • Typ danych zwracanej wartości (z wyjątkiem dla operatora konwersji)

    Elementy z powyższej listy nie są częścią podpisu.Chociaż nie można ich używać do rozróżniania wersji przeciążony, można je różnią przeciążony wersji, które są właściwie zróżnicowane przez ich podpisów.

  • Późnym wiązaniem argumenty.Jeśli zamierzasz przekazać koniec zmiennej obiektu związanego przeciążony wersji, należy zadeklarować odpowiedni parametr jako Object.

Wiele wersji procedury

Załóżmy, że są piśmie Sub procedurę, aby zaksięgować transakcję przeciwko saldo odbiorcy, a chcesz mieć możliwość odesłania do klienta, nazwę lub numer konta.Aby to umożliwić, można zdefiniować dwa różne Sub procedury, jak w poniższym przykładzie:

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

Wersje przeciążony

Alternatywą jest na przeciążenie nazwa pojedynczej procedury.Można użyć Overloads (Visual Basic) słowo kluczowe, aby zdefiniować wersji procedurę dla każdej listy parametrów w następujący sposób:

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

Overloads dodatkowe

Jeśli chcemy również zaakceptować kwota transakcji w albo Decimal lub Single, dalsze mogą przeciążać siebie post do umożliwienia tej zmiany.Jeśli to Ty do każdego z przeciążeniem w poprzednim przykładzie należałoby cztery Sub procedur, wszystkie o tej samej nazwie, ale z czterech różnych podpisów.

Korzyści wynikające z przeciążenia

Zaletą przeciążanie procedura jest elastyczność wywołanie.Aby użyć post procedury zadeklarowane w poprzednim przykładzie kod wywołujący mogą uzyskać identyfikator klienta jako String lub Integer, a następnie wywołać tę samą procedurę, w każdym przypadku.Poniższy przykład ilustruje to:

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

Zobacz też

Zadania

Porady: definiowanie wielu wersji procedury (Visual Basic)

Porady: wywoływanie procedury przeciążenia (Visual Basic)

Porady: przeciążanie procedury wykorzystującej parametry opcjonalne (Visual Basic)

Porady: przeciążanie procedury wykorzystującej nieokreśloną liczbę parametrów (Visual Basic)

Informacje

Overloads (Visual Basic)

Koncepcje

Procedury w Visual Basic

Zagadnienia dotyczące przeciążania procedur (Visual Basic)

Rozpoznanie przeciążenia (Visual Basic)

Typy ogólne w Visual Basic (Visual Basic)