Sdílet prostřednictvím


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ů

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

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

  3. Pro každý přijatelný počet zadaných hodnot napište Sub příkaz nebo Function deklaraci, který definuje odpovídající seznam parametrů. Nepoužívejte v této přetížené verzi ani OptionalParamArray klíčové slovo.

  4. V každé deklaraci před Sub klíčové slovo nebo Function klíčové slovo pomocí klíčového slova Přetížení .

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

  6. Ukončete každou proceduru End Sub podle potřeby pomocí příkazu nebo End 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.

Viz také