Dela via


Valfritt (Visual Basic)

Anger att ett procedurargument kan utelämnas när proceduren anropas.

Kommentarer

För varje valfri parameter måste du ange ett konstant uttryck som standardvärde för parametern. Om uttrycket utvärderas till Ingenting används standardvärdet för värdedatatypen som standardvärde för parametern.

Om parameterlistan innehåller en valfri parameter måste varje parameter som följer den också vara valfri.

Modifieraren Optional kan användas i följande sammanhang:

Kommentar

När du anropar en procedur med eller utan valfria parametrar kan du skicka argument efter position eller efter namn. Mer information finns i Skicka argument efter position och efter namn.

Kommentar

Du kan också definiera en procedur med valfria parametrar med hjälp av överlagring. Om du har en valfri parameter kan du definiera två överlagrade versioner av proceduren, en som accepterar parametern och en som inte gör det. Mer information finns i Överlagring av procedurer.

Exempel 1

I följande exempel definieras en procedur som har en valfri parameter.

Public Function FindMatches(ByRef values As List(Of String),
                            ByVal searchString As String,
                            Optional ByVal matchCase As Boolean = False) As List(Of String)

    Dim results As IEnumerable(Of String)

    If matchCase Then
        results = From v In values
                  Where v.Contains(searchString)
    Else
        results = From v In values
                  Where UCase(v).Contains(UCase(searchString))
    End If

    Return results.ToList()
End Function

Exempel 2

I följande exempel visas hur du anropar en procedur med argument som skickas efter position och med argument som skickas med namn. Proceduren har två valfria parametrar.

Private Sub TestParameters()
    ' Call the procedure with its arguments passed by position,
    studentInfo("Mary", 19, #9/21/1981#)

    ' Omit one optional argument by holding its place with a comma.
    studentInfo("Mary", , #9/21/1981#)

    ' Call the procedure with its arguments passed by name.
    studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")

    ' Supply an argument by position and an argument by name.
    studentInfo("Mary", birth:=#9/21/1981#)
End Sub

Private Sub studentInfo(ByVal name As String,
   Optional ByVal age As Short = 0,
   Optional ByVal birth As Date = #1/1/2000#)

    Console.WriteLine("name: " & name)
    Console.WriteLine("age: " & age)
    Console.WriteLine("birth date: " & birth)
    Console.WriteLine()
End Sub

Se även