Postupy: Přetížení procedury, která přebírá nekonečný počet parametrů (Visual Basic).
Pokud má procedura parametr ParamArray , nelze definovat přetíženou verzi, která přebírá jednorozměrné pole pro pole parametrů. Další informace naleznete v tématu Implicitní přetížení parametru ParamArray v aspektech přetížení procedur.
Přetížení procedury, která přebírá proměnný počet parametrů
Ověřte, že procedura a volání logiky kódu mají výhody z přetížených verzí více než z parametru
ParamArray
. Viz "Přetížení a ParamArrays" v aspektech přetížení procedur.Určete, která čísla zadaných hodnot má procedura přijmout v proměnné části seznamu parametrů. To může zahrnovat případ bez hodnoty a může obsahovat případ jednoho jednorozměrného pole.
Pro každý přijatelný počet zadaných hodnot napište
Sub
příkaz neboFunction
deklaraci, který definuje odpovídající seznam parametrů. Nepoužívejte v této přetížené verzi aniOptional
ParamArray
klíčové slovo.V každé deklaraci před
Sub
klíčové slovo neboFunction
klíčové slovo pomocí klíčového slova Přetížení .Za každou deklaraci napište kód procedury, který by se měl provést, když volající kód poskytuje hodnoty odpovídající seznamu parametrů dané deklarace.
Ukončete každou proceduru
End Sub
podle potřeby pomocí příkazu neboEnd Function
příkazu.
Příklad
Následující příklad ukazuje proceduru definovanou parametrem ParamArray a pak ekvivalentní sadu přetížených 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.
Takový postup nelze přetížit seznamem parametrů, který přebírá jednorozměrné pole pro pole parametrů. Můžete však použít podpisy ostatních implicitních přetížení. Toto je znázorněno v následujících deklaracích.
' 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)
Kód v přetížených verzích nemusí testovat, zda volající kód zadal jednu nebo více hodnot parametru ParamArray
, nebo pokud ano, kolik. Visual Basic předá ovládací prvek verzi odpovídající seznamu volajících argumentů.
Kompilace kódu
Vzhledem k tomu, že procedura s parametrem ParamArray
je ekvivalentní sadě přetížených verzí, nelze takový postup přetížit seznamem parametrů, který odpovídá žádnému z těchto implicitních přetížení. Další informace naleznete v tématu Důležité informace o přetížení procedur.
Zabezpečení rozhraní .NET Framework
Kdykoli se zabýváte polem, které může být neomezeně velké, hrozí riziko, že dojde k překročení určité interní kapacity vaší aplikace. Pokud přijmete pole parametrů, měli byste otestovat délku pole, do které byl kód volání předán, a provést příslušné kroky, pokud je příliš velký pro vaši aplikaci.