Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 logika volání kódu využívají výhod přetížených verzí více než parametrů
ParamArray. Vizte "Přetížení a ParamArrays" v Úvahy o přetěžování 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
Subpříkaz neboFunctiondeklaraci, který definuje odpovídající seznam parametrů. Nepoužívejte v této přetížené verzi ani klíčové slovoOptional, ani klíčové slovoParamArray.V každé deklaraci předcházejte klíčové slovo
Subnebo klíčové slovoFunctionklíčovým slovem 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 příkazem
End SubneboEnd Functionpodle potřeby.
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řijme jednorozměrné pole jako pole parametrů. Nicméně, můžete použít signatury 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á řízení verzi, která odpovídá seznamu argumentů volání.
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 Úvahy 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.