Udostępnij za pośrednictwem


Procedura przeciążenie (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

s3tbathb.collapse_all(pl-pl,VS.110).gifWersje 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

s3tbathb.collapse_all(pl-pl,VS.110).gifOverloads 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

Jak: Definiowanie wielu wersji procedury (Visual Basic)

Jak: wywołać procedurę przeciążone (Visual Basic)

Jak: przeciążenie procedurę, która pobiera parametry opcjonalne (Visual Basic)

Jak: przeciążenie procedurę, która ma nieskończoną liczbę parametrów (Visual Basic)

Informacje

Overloads (Visual Basic)

Koncepcje

Procedury języka Visual Basic

Uwagi w przeciążanie procedur (Visual Basic)

Przeciążenia (Visual Basic)

Typy rodzajowe w języku Visual Basic (VB)