Udostępnij za pośrednictwem


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

Na przeciążenie procedurę, trzeba używać różnych podpisu dla każdej wersji przeciążone.Zwykle oznacza to, że każda wersja należy określić listę różnych parametrów.Aby uzyskać więcej informacji, zobacz "Inny podpis" w Przeciążanie procedury (Visual Basic).

Mogą przeciążać Function procedury z Sub procedury i odwrotnie, o ile mają oni różnych podpisów.Dwa overloads nie różnią się tylko w tym jeden ma wartość zwrotu, a drugi nie.

Właściwość można przeciążenie samo przeciążenie procedury i z ograniczeniami.Jednakże nie mogą przeciążać procedurę z właściwością lub odwrotnie.

Alternatywy do wersji przeciążony

Szczególnie w przypadku, gdy jest obecność argumentów opcjonalnych lub ich liczba jest zmienna czasami być alternatywy do wersji przeciążone.

Należy pamiętać, że argumentów opcjonalnych nie są koniecznie obsługiwane przez wszystkie języki i tablic parametrów są ograniczone do Visual Basic.Jeśli piszesz procedurę, która może zostać wywołana z kodu napisanego w dowolnym z kilku różnych języków przeciążony oferty wersji zapewnia największą elastyczność.

Overloads i argumentów opcjonalnych

Kod wywołujący może opcjonalnie dostaw lub pominięcie jednego lub więcej argumentów, można zdefiniować wiele wersji przeciążony lub użyj parametrów opcjonalnych.

Kiedy używać wersji przeciążony

Można rozważyć możliwość definiowania serii przeciążony wersje w następujących przypadkach:

  • Logikę Kodeksu postępowania różni się znacznie w zależności od tego, czy kod wywołujący dostaw opcjonalny argument lub nie.

  • Kodeksu postępowania nie można wiarygodnie sprawdzić, czy kod wywołujący przekazał opcjonalny argument.Dotyczy to, na przykład, jeśli istnieje nie kandydatem na domyślną wartość kod wywołujący nie można się spodziewać dostaw.

Kiedy używać parametrów opcjonalnych

Może preferować jeden lub więcej parametrów opcjonalnych w następujących przypadkach:

  • Tylko wymagane działanie, gdy kod wywołujący nie dostarcza opcjonalny argument jest parametr jest ustawiony na wartość domyślną.W takim przypadku Kodeksu postępowania mogą być mniej skomplikowany, w przypadku zdefiniowania jednej wersji z jednym lub więcej Optional parametry.

Aby uzyskać więcej informacji, zobacz Parametry opcjonalne (Visual Basic).

Overloads i ParamArrays

Gdy kod wywołujący może przekazać zmiennej liczbie argumentów, można zdefiniować wiele wersji przeciążony lub użyć Tablica parametru.

Kiedy używać wersji przeciążony

Można rozważyć możliwość definiowania serii przeciążony wersje w następujących przypadkach:

  • Wiadomo, że kod wywołujący nigdy nie przekazuje więcej niż małej liczby wartości do tablicy parametrów.

  • Logikę Kodeksu postępowania różni się znacznie w zależności od tego, ile wartości kod wywołujący przechodzi.

  • Kod wywołujący można przekazać wartości różnych typów danych.

Kiedy używać Tablica parametru

Są lepiej obsługiwane przez ParamArray parametr w następujących przypadkach:

  • Nie jest możliwe do przewidzenia ile wartości do tablicy parametr można przekazać kod wywołujący i może się dużej liczby.

  • Procedura logiki pożycza się Iterowanie poprzez wszystkie wartości przekazuje kod wywołujący zasadniczo tej samej operacji każdą wartość.

Aby uzyskać więcej informacji, zobacz Parameter — Tablice (Visual Basic).

Niejawne Overloads dla parametrów opcjonalnych

Procedury z Optional (Visual Basic) parametr jest równoważne z dwóch procedur przeciążony, jeden z opcjonalnych parametrów i bez konieczności jej.Taka procedura nie mogą przeciążać z listy parametr odpowiadający jednej z tych.Następujące deklaracje ilustrują to.

Overloads Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads. 
' Overloads Sub q(ByVal b As Byte) 
' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use. 
' Overloads Sub q(ByVal c As Byte, ByVal k As Long) 
' The following overload uses a different signature and is valid. 
Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)

Procedury z więcej niż jeden parametr opcjonalny istnieje zestaw niejawna overloads, przez logikę podobny do tego w poprzednim przykładzie.

Niejawne Overloads dla parametru ParamArray

Kompilator uzna procedury z ParamArray (Visual Basic) parametr ma nieskończoną liczbę overloads różniących się od siebie co kod wywołujący przekazuje do tablicy parametrów w następujący sposób:

  • Jeden przeciążenia podczas kod wywołujący nie dostarcza argumentParamArray

  • Jeden przeciążenia podczas kod wywołujący dostaw Jednowymiarowa tablica ParamArray typ elementu

  • Dla każdego dodatnią liczbą całkowitą, jeden przeciążenie dla Jeżeli kod wywołujący dostarcza tej liczby argumentów, każdy z ParamArray typ elementu

Następujące deklaracje ilustrują tych overloads niejawne.

Overloads Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads. 
' Overloads Sub p(ByVal d As Date) 
' Overloads Sub p(ByVal d As Date, ByVal c() As Char) 
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char) 
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char) 
' And so on, with an additional Char argument in each successive overload.

Nie mogą przeciążać takiej procedury, z listy parametrów, że trwa Jednowymiarowa tablica dla parametru tablicy.Można jednak użyć podpisów niejawna overloads.Następujące deklaracje ilustrują to.

' The following overload is not valid because it takes an array for the parameter array. 
' Overloads Sub p(ByVal x As Date, ByVal y() As Char) 
' The following overload takes a single value for the parameter array and is valid. 
Overloads Sub p(ByVal z As Date, ByVal w As Char)

Programowanie typeless jako alternatywa do przeciążania

Jeśli kod wywołujący do przekazywania różnych typów danych do parametru, alternatywne podejście jest typeless programowania.Można ustawić typ przełącznika do sprawdzania Off z albo Option Strict — Instrukcja lub /optionstrict opcję kompilatora.Następnie trzeba zadeklarować typ danych parametru.Jednakże podejście to ma następujące zalety w porównaniu do przeciążania:

  • Programowanie typeless daje mniej efektywne wykonanie kodu.

  • Procedury badania musi dla każdego typu danych przekazywanych wychodzenia.

  • Kompilator nie sygnału błąd, jeśli kod wywołujący przekazuje typ danych, który nie obsługuje procedurę.

Zobacz też

Zadania

Procedury rozwiązywania problemów (Visual Basic)

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

Parametry i argumenty procedur (Visual Basic)

Rozpoznanie przeciążenia (Visual Basic)