Dela via


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

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

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

  3. För varje acceptabelt antal angivna värden skriver du en Sub - eller Function -deklarationssats som definierar motsvarande parameterlista. Använd inte nyckelordet Optional eller i den ParamArray här överlagrade versionen.

  4. I varje deklaration föregår du nyckelordet Sub eller Function med nyckelordet Överlagringar .

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

  6. Avsluta varje procedur med instruktionen End Sub eller End 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