Udostępnij za pośrednictwem


Porady: przeciążanie procedury wykorzystującej nieokreśloną liczbę parametrów (Visual Basic)

Jeśli procedura ma ParamArray (Visual Basic) parametru nie można definiować przeciążony wersji, biorąc Jednowymiarowa tablica dla parametru tablicy.Aby uzyskać więcej informacji, zobacz "Niejawne Overloads dla parametru ParamArray" w Zagadnienia dotyczące przeciążania procedur (Visual Basic).

Na przeciążenie procedurę, która zajmuje zmienna liczba parametrów

  1. Upewnienia się, że procedury i wywoływanie kodu logiki korzyści z przeciążone wersje więcej niż z ParamArray parametru.Zobacz "Przeciążeniem i ParamArrays" w Zagadnienia dotyczące przeciążania procedur (Visual Basic).

  2. Należy określić, które numery wartości dostarczone procedury należy zaakceptować w zmiennej części listy parametrów.Może to obejmować żadnej wartości, i może zawierać przypadku pojedynczy tablicą jednowymiarową.

  3. Dla każdego numeru dopuszczalne wartości dostarczone zapisu Sub lub Function instrukcji deklaracji, który definiuje lista odpowiednich parametrów.Nie należy używać albo Optional lub ParamArray słowa kluczowego w tej wersji przeciążone.

  4. W przypadku każdego zgłoszenia, należy poprzedzić Sub lub Function słowa kluczowego z Overloads (Visual Basic) słowa kluczowego.

  5. Po każdej deklaracji napisać kod procedury, który powinien wykonać, gdy kod wywołujący dostarcza wartości odpowiadające tej deklaracji z listy wartości parametru.

  6. Zakończenie każdej procedury z End Sub lub End Function instrukcji, jak właściwe.

Przykład

W poniższym przykładzie pokazano procedurę zdefiniowane z ParamArray (Visual Basic) parametr i równoważne zestaw przeciążone procedury.

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ć siebie takiej procedury, z listy parametrów, że trwa Jednowymiarowa tablica dla parametru tablicy.Można jednak użyć podpisów niejawny 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)

Kod w wersjach przeciążony nie musi sprawdzić, czy kod wywołujący dostarczone jedną lub więcej wartości dla ParamArray parametr, lub jeśli tak, jak wiele.Visual Basicformant przechodzi do wersji dopasowania wywołania listy argumentów.

Kompilowanie kodu

Ponieważ procedura z ParamArray parametr jest odpowiednikiem zestawu wersji przeciążony, taka procedura nie mogą przeciążać siebie z listy parametr, odpowiednie do dowolnego z tych overloads niejawne.Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące przeciążania procedur (Visual Basic).

Zabezpieczenia

W każdym przypadku, gdy można poradzić sobie z tablicy, które mogą być duże przez czas nieokreślony, istnieje ryzyko przekroczenia niektóre wewnętrznych zdolności aplikacji.Jeśli akceptujesz Tablica parametru, należy badanie długość tablicy do niej przekazany kod wywołujący i podjąć właściwe kroki, jeśli jest zbyt duży dla aplikacji.

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)

Koncepcje

Procedury w Visual Basic

Parametry i argumenty procedur (Visual Basic)

Parametry opcjonalne (Visual Basic)

Parameter — Tablice (Visual Basic)

Przeciążanie procedury (Visual Basic)

Rozpoznanie przeciążenia (Visual Basic)