Udostępnij za pomocą


Jak przeciążyć procedurę, która przyjmuje parametry opcjonalne (Visual Basic)

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

  1. Napisz instrukcję deklaracji Sub lub Function, która zawiera opcjonalny parametr na liście parametrów. Nie używaj słowa kluczowego Optional w tej przeciążonej wersji.

  2. Poprzedź słowo kluczowe Sub lub Function słowem kluczowym Przeciążenia.

  3. Napisz kod procedury, który powinien zostać wykonany, gdy kod wywołujący dostarcza opcjonalny argument.

  4. Zakończ procedurę instrukcją End Sub lub End Function, w zależności od tego, co jest właściwe.

  5. 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.

  6. Napisz kod procedury, który powinien zostać wykonany, gdy kod wywołujący nie dostarcza opcjonalnego argumentu. Zakończ procedurę instrukcją End Sub lub End 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

  1. 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.

  2. Dla każdej dopuszczalnej kombinacji dostarczonych opcjonalnych argumentów napisz instrukcję deklaracji Sub lub Function, która definiuje listę odpowiednich parametrów. Nie używaj słowa kluczowego Optional .

  3. W każdej deklaracji poprzedź słowo kluczowe Sub lub Function słowem kluczowym Przeciążenie.

  4. 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.

  5. W razie potrzeby zakończ każdą procedurę za pomocą instrukcji End Sub or End Function .

Zobacz także