Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 upewnić się, że procedura oraz logika kodu wywołującego czerpie większe korzyści z przeciążonych wersji niż z parametru
ParamArray. Zobacz "Przeciążenia i tablice parametrów" w Zagadnienia dotyczące przeciążania procedur.Ustal, które liczby podanych wartości procedura powinna zaakceptować w zmiennej części listy parametrów. Może to obejmować przypadek braku wartości, a także przypadek pojedynczej tablicy jednowymiarowej.
Dla każdej dopuszczalnej liczby podanych wartości napisz instrukcję deklaracji
SublubFunction, która definiuje odpowiednią listę parametrów. Nie należy używać ani słowa kluczowegoOptional, aniParamArrayw tej przeciążonej wersji.W każdej deklaracji poprzedź słowo kluczowe
SublubFunctionsłowem kluczowym Przeciążenie.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 SuborEnd 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, używając listy parametrów, która przyjmuje jednowymiarową tablicę jako tablicę parametrów. Można jednak używać sygnatur 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 sprawdzać, czy kod wywołujący dostarczył jedną lub więcej wartości dla parametru ParamArray, ani jeśli tak, ile ich było. 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 programu .NET Framework
Za każdym razem, gdy zajmujesz się tablicą, która może być nieskończenie duża, istnieje ryzyko przekroczenia pewnej wewnętrznej pojemności aplikacji. Jeśli akceptujesz tablicę parametrów, powinieneś sprawdzić długość tablicy przekazanej przez kod wywołujący i podjąć odpowiednie kroki, jeśli jest zbyt duża dla twojej aplikacji.
Zobacz także
- Procedury
- Parametry i argumenty procedury
- opcjonalne parametry
- Tablice parametrów
- Przeciążanie procedur
- procedury rozwiązywania problemów
- Instrukcje: definiowanie wielu wersji procedury
- Instrukcje: wywoływanie przeciążonej procedury
- Jak: Przeciążać Procedurę, która Przyjmuje Opcjonalne Parametry
- Rozpoznawanie przeciążenia