Porady: przeciążanie procedury wykorzystującej nieokreśloną liczbę parametrów (Visual Basic)
Jeśli procedura ma parametr ParamArray , nie można zdefiniować przeciążonej wersji biorącej tablicę jednowymiarową dla tablicy parametrów. Aby uzyskać więcej informacji, zobacz sekcję "Niejawne przeciążenia parametru ParamArray" w temacie Zagadnienia dotyczące przeciążania procedur.
Aby przeciążyć procedurę, która przyjmuje zmienną liczbę parametrów
Należy sprawdzić, czy procedura i wywoływanie logiki kodu korzysta z przeciążonych wersji więcej niż z parametru
ParamArray
. Zobacz sekcję "Przeciążenia i paramArrays" w temacie Zagadnienia dotyczące procedur przeciążania.Ustal, które liczby podanych wartości procedura powinna zaakceptować w zmiennej części listy parametrów. Może to obejmować wielkość liter bez wartości i może zawierać wielkość pojedynczej tablicy jednowymiarowej.
Dla każdej dopuszczalnej liczby podanych wartości napisz instrukcję
Sub
orFunction
deklaracji, która definiuje odpowiednią listę parametrów. Nie należy używać słowa kluczowegoOptional
ParamArray
lub w tej przeciążonej wersji.W każdej deklaracji poprzedzić
Sub
słowo kluczowe orFunction
za pomocą słowa kluczowego Przeciążenia .Po każdej deklaracji napisz kod procedury, który powinien zostać wykonany, gdy kod wywołujący dostarcza wartości odpowiadające liście parametrów tej deklaracji.
W razie potrzeby zakończ każdą procedurę za pomocą instrukcji
End Sub
orEnd Function
.
Przykład
W poniższym przykładzie przedstawiono procedurę zdefiniowaną za pomocą parametru ParamArray , a następnie równoważny zestaw przeciążonych procedur.
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 można przeciążyć takiej procedury z listą parametrów, która przyjmuje tablicę jednowymiarową dla tablicy parametrów. Można jednak użyć podpisów innych niejawnych przeciążeń. Poniższe 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 przeciążonych wersjach nie musi testować, czy kod wywołujący dostarczył co najmniej jedną wartość parametru ParamArray
, czy też ile tak. Język Visual Basic przekazuje kontrolę do wersji zgodnej z listą argumentów wywołujących.
Kompilowanie kodu
Ponieważ procedura z parametrem ParamArray
jest równoważna zestawowi przeciążonych wersji, nie można przeciążyć takiej procedury listą parametrów odpowiadającą żadnym z tych niejawnych przeciążeń. Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące przeciążania procedur.
Zabezpieczenia.NET Framework
Za każdym razem, gdy zajmujesz się tablicą, która może być przez czas nieokreślony duża, istnieje ryzyko przekroczenia pewnej wewnętrznej pojemności aplikacji. Jeśli akceptujesz tablicę parametrów, należy przetestować długość tablicy przekazanego do niej kodu wywołującego i wykonać odpowiednie kroki, jeśli jest zbyt duży dla aplikacji.
Zobacz też
- z konkretnym obiektem
- Parametry i argumenty procedur
- Parametry opcjonalne
- Tablice parametrów
- Przeciążanie procedury
- Rozwiązywanie problemów z procedurami
- Instrukcje: definiowanie wielu wersji procedury
- Instrukcje: wywoływanie procedury przeciążenia
- Instrukcje: przeciążanie procedury korzystającej z parametrów opcjonalnych
- Rozpoznanie przeciążenia