Udostępnij za pośrednictwem


Porady: przeciążanie procedury wykorzystującej 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ę Sub or Function deklaracji, która zawiera opcjonalny parametr na liście parametrów. Nie używaj słowa kluczowego Optional w tej przeciążonej wersji.

  2. Poprzedzić słowo Sub kluczowe or Function za pomocą słowa kluczowego Przeciążenia .

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

  4. W razie potrzeby zakończ procedurę instrukcją End Sub or End Function .

  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. W razie potrzeby zakończ procedurę instrukcją End Sub or End Function .

    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ę Sub or Function deklaracji, która definiuje odpowiednią listę parametrów. Nie używaj słowa kluczowego Optional .

  3. W każdej deklaracji poprzedzić Sub słowo kluczowe or Function za pomocą słowa kluczowego Przeciążenia .

  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 też