Anvisningar: Överbelasta en procedur som tar ett obegränsat antal parametrar (Visual Basic)
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
ParamArray
parameter. Se "Överlagringar och ParamArrays" i Överväganden i Överlagringsprocedurer.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 inte nyckelordetOptional
eller i denParamArray
här överlagrade versionen.I varje deklaration föregår du nyckelordet
Sub
ellerFunction
med nyckelordet Överlagringar .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 Sub
ellerEnd Function
efter 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. Mer information finns i Överväganden i Ö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
- Förfaranden
- Procedureparametrar och argument
- Valfria parametrar
- Parametermatriser
- Överlagring av procedur
- Felsökningsprocedurer
- Anvisningar: Definiera flera versioner av en procedur
- Anvisningar: Anropa en överbelastad procedur
- Gör så här: Överbelasta en procedur som tar valfria parametrar
- Överlagringsmatchning