Udostępnij za pośrednictwem


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

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

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

  3. Dla każdej dopuszczalnej liczby podanych wartości napisz instrukcję Sub or Function deklaracji, która definiuje odpowiednią listę parametrów. Nie należy używać słowa kluczowego OptionalParamArray lub w tej przeciążonej wersji.

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

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

  6. W razie potrzeby zakończ każdą procedurę za pomocą instrukcji End Sub or End 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ż