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
Koncepcje
Zagadnienia dotyczące przeciążania procedur (Visual Basic)