Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om en procedur har en ParamArray-parameter kan du inte definiera en överlagrad version som tar en endimensionell matris för parametermatrisen. Mer information finns i "Implicita överlagringar för en ParamArray-parameter" i Överväganden i överlagringsprocedurer.
Överbelasta en procedur som tar ett variabelt antal parametrar
Kontrollera att proceduren och anropande kodlogik drar nytta av överlagrade versioner mer än från en
ParamArrayparameter. Se "Överbelastningar och ParamArrays" i Överväganden vid Överbelastningsprocedurer.Avgör vilka antal angivna värden som proceduren ska acceptera i variabeldelen av parameterlistan. Detta kan omfatta fallet med inget värde, och det kan innehålla fallet med en enda endimensionell matris.
För varje acceptabelt antal angivna värden skriver du en
Sub- ellerFunction-deklarationssats som definierar motsvarande parameterlista. Använd varken nyckelordetOptionalellerParamArrayi den här överlagrade versionen.I varje deklaration föregår du nyckelordet
SubellerFunctionmed nyckelordet Overloads.Efter varje deklaration skriver du den procedurkod som ska köras när den anropande koden tillhandahåller värden som motsvarar den deklarationens parameterlista.
Avsluta varje procedur med instruktionen
End SubellerEnd Functionefter behov.
Exempel
I följande exempel visas en procedur som definierats med en ParamArray-parameter och sedan en motsvarande uppsättning överlagrade procedurer.
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.
Du kan inte överbelasta en sådan procedur med en parameterlista som tar en endimensionell matris för parametermatrisen. Du kan dock använda signaturerna för de andra implicita överlagringarna. Följande deklarationer illustrerar detta.
' 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)
Koden i de överlagrade versionerna behöver inte testa om den anropande koden angav ett eller flera värden för parametern ParamArray , eller i så fall hur många. Visual Basic skickar kontrollen till den version som matchar listan med anropsargument.
Kompilera koden
Eftersom en procedur med en ParamArray parameter motsvarar en uppsättning överlagrade versioner kan du inte överbelasta en sådan procedur med en parameterlista som motsvarar någon av dessa implicita överlagringar. För mer information, se Överväganden vid överlagringsprocedurer.
.NET Framework-säkerhet
När du hanterar en matris som kan vara obegränsad, finns det risk för att programmets interna kapacitet överskrids. Om du accepterar en parametermatris bör du testa den anropande kodens längd för matrisen och vidta lämpliga åtgärder om den är för stor för ditt program.
Se även
- Procedurer
- Procedurparametrar och -argument
- valfria parametrar
- parametermatriser
- Proceduröverbelastning
- Felsökningsprocedurer
- Så här definierar du flera versioner av en procedur
- Så här anropar du en överbelastad procedur
- Så här: Överbelasta en procedur som tar valfria parametrar
- Överlagringsupplösning