Dela via


Anvisningar: Överbelasta en procedur som tar valfria parametrar (Visual Basic)

Om en procedur har en eller flera valfria parametrar kan du inte definiera en överbelastad version som matchar någon av dess implicita överlagringar. Mer information finns i "Implicita överlagringar för valfria parametrar" i Överväganden i överlagringsprocedurer.

En valfri parameter

Överbelasta en procedur som tar en valfri parameter

  1. Skriv en Sub - eller Function -deklarationssats som innehåller den valfria parametern i parameterlistan. Använd inte nyckelordet Optional i den här överlagrade versionen.

  2. Före nyckelordet Sub eller Function med nyckelordet Overloads .

  3. Skriv den procedurkod som ska köras när den anropande koden tillhandahåller det valfria argumentet.

  4. Avsluta proceduren med instruktionen End Sub eller End Function efter behov.

  5. Skriv en andra deklarationssats som är identisk med den första deklarationen förutom att den inte innehåller den valfria parametern i parameterlistan.

  6. Skriv den procedurkod som ska köras när den anropande koden inte anger det valfria argumentet. Avsluta proceduren med instruktionen End Sub eller End Function efter behov.

    I följande exempel visas en procedur som definierats med en valfri parameter, en motsvarande uppsättning med två överlagrade procedurer och slutligen exempel på både ogiltiga och giltiga överlagrade versioner.

    Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
    
    ' The preceding definition is equivalent to the following two overloads.
    ' Overloads Sub q(ByVal b As Byte)
    ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
    
    ' Therefore, the following overload is not valid because the signature is already in use.
    ' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
    ' The following overload uses a different signature and is valid.
    Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
    

Flera valfria parametrar

För en procedur med mer än en valfri parameter behöver du normalt fler än två överlagrade versioner. Om det till exempel finns två valfria parametrar, och anropskoden kan ange eller utelämna var och en oberoende av den andra, behöver du fyra överlagrade versioner, en för varje möjlig kombination av angivna argument.

När antalet valfria parametrar ökar ökar överlagringens komplexitet. Om inte vissa kombinationer av angivna argument inte är acceptabla behöver du för valfria N-parametrar 2 ^ N överlagrade versioner. Beroende på procedurens art kan det bero på att logikens klarhet motiverar den extra ansträngningen att definiera alla överlagrade versioner.

Överbelasta en procedur som tar mer än en valfri parameter

  1. Avgör vilka kombinationer av angivna valfria argument som är godtagbara för procedurens logik. En oacceptabel kombination kan uppstå om en valfri parameter är beroende av en annan. Om en parameter till exempel accepterar en persons namn och en annan accepterar personens ålder är en kombination av argument som anger åldern men utelämnar namnet oacceptabelt.

  2. För varje acceptabel kombination av angivna valfria argument skriver du en Sub - eller Function -deklarationsinstruktion som definierar motsvarande parameterlista. Använd inte nyckelordet Optional .

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

  4. Efter varje deklaration skriver du den procedurkod som ska köras när den anropande koden tillhandahåller en argumentlista som motsvarar den deklarationens parameterlista.

  5. Avsluta varje procedur med instruktionen End Sub eller End Function efter behov.

Se även