Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli procedura ma co najmniej jeden parametr opcjonalny , nie można zdefiniować przeciążonej wersji zgodnej z żadnym z jej niejawnych przeciążeń. Aby uzyskać więcej informacji, zobacz sekcję "Niejawne przeciążenia parametrów opcjonalnych" w temacie Zagadnienia dotyczące przeciążania procedur.
Jeden opcjonalny parametr
Aby przeciążyć procedurę, która przyjmuje jeden opcjonalny parametr
Napisz instrukcję deklaracji
SublubFunction, która zawiera opcjonalny parametr na liście parametrów. Nie używaj słowa kluczowegoOptionalw tej przeciążonej wersji.Poprzedź słowo kluczowe
SublubFunctionsłowem kluczowym Przeciążenia.Napisz kod procedury, który powinien zostać wykonany, gdy kod wywołujący dostarcza opcjonalny argument.
Zakończ procedurę instrukcją
End SublubEnd Function, w zależności od tego, co jest właściwe.Napisz drugą instrukcję deklaracji, która jest identyczna z pierwszą deklaracją, z tą różnicą, że nie zawiera opcjonalnego parametru na liście parametrów.
Napisz kod procedury, który powinien zostać wykonany, gdy kod wywołujący nie dostarcza opcjonalnego argumentu. Zakończ procedurę instrukcją
End SublubEnd Function, w zależności od tego, co jest właściwe.W poniższym przykładzie przedstawiono procedurę zdefiniowaną z opcjonalnym parametrem, równoważnym zestawem dwóch przeciążonych procedur, a w końcu przykładami zarówno nieprawidłowych, jak i prawidłowych przeciążonych wersji.
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)
Wiele parametrów opcjonalnych
W przypadku procedury z więcej niż jednym opcjonalnym parametrem zwykle potrzebujesz więcej niż dwóch przeciążonych wersji. Jeśli na przykład istnieją dwa parametry opcjonalne, a kod wywołujący może podać lub pominąć każdy z nich niezależnie od siebie, potrzebne są cztery przeciążone wersje, po jednym dla każdej możliwej kombinacji podanych argumentów.
Wraz ze wzrostem liczby parametrów opcjonalnych zwiększa się złożoność przeciążenia. Chyba że niektóre kombinacje podanych argumentów nie są dopuszczalne, w przypadku N parametrów opcjonalnych potrzebujesz 2 ^ N przeciążonych wersji. W zależności od charakteru procedury można stwierdzić, że jasność logiki uzasadnia dodatkowy wysiłek definiowania wszystkich przeciążonych wersji.
Aby przeciążyć procedurę, która przyjmuje więcej niż jeden opcjonalny parametr
Określ, które kombinacje podanych opcjonalnych argumentów są dopuszczalne dla logiki procedury. Może wystąpić niedopuszczalna kombinacja, jeśli jeden opcjonalny parametr zależy od innego. Jeśli na przykład jeden parametr akceptuje imię i nazwisko osoby, a inny akceptuje wiek osoby, kombinacja argumentów dostarczających wiek, ale pominięcie nazwy jest niedopuszczalne.
Dla każdej dopuszczalnej kombinacji dostarczonych opcjonalnych argumentów napisz instrukcję deklaracji
SublubFunction, która definiuje listę odpowiednich parametrów. Nie używaj słowa kluczowegoOptional.W każdej deklaracji poprzedź słowo kluczowe
SublubFunctionsłowem kluczowym Przeciążenie.Po każdej deklaracji napisz kod procedury, który powinien zostać wykonany, gdy kod wywołujący dostarcza listę argumentów odpowiadającą liście parametrów tej deklaracji.
W razie potrzeby zakończ każdą procedurę za pomocą instrukcji
End SuborEnd Function.
Zobacz także
- Procedury
- Parametry i argumenty procedury
- opcjonalne parametry
- Tablice parametrów
- Przeciążanie procedur
- procedury rozwiązywania problemów
- Instrukcje: definiowanie wielu wersji procedury
- Instrukcje: wywoływanie przeciążonej procedury
- Instrukcje: przeciążanie procedury, która przyjmuje nieokreśloną liczbę parametrów
- Rozpoznawanie przeciążenia