Optional (Visual Basic)

Określa, że argument procedury można pominąć po wywołaniu procedury.

Uwagi

Dla każdego opcjonalnego parametru należy określić wyrażenie stałe jako wartość domyślną tego parametru. Jeśli wyrażenie zwróci wartość Nic, domyślna wartość typu danych wartości jest używana jako wartość domyślna parametru.

Jeśli lista parametrów zawiera opcjonalny parametr, każdy z poniższych parametrów musi być również opcjonalny.

Modyfikator Optional może być używany w następujących kontekstach:

Uwaga

Podczas wywoływania procedury z opcjonalnymi parametrami lub bez tych parametrów można przekazać argumenty według pozycji lub nazwy. Aby uzyskać więcej informacji, zobacz Przekazywanie argumentów według pozycji i według nazwy.

Uwaga

Można również zdefiniować procedurę z opcjonalnymi parametrami przy użyciu przeciążenia. Jeśli masz jeden opcjonalny parametr, możesz zdefiniować dwie przeciążone wersje procedury, jeden, który akceptuje parametr i taki, który nie. Aby uzyskać więcej informacji, zobacz Przeciążenie procedury.

Przykład 1

W poniższym przykładzie zdefiniowano procedurę, która ma opcjonalny parametr.

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

Przykład 2

W poniższym przykładzie pokazano, jak wywołać procedurę z argumentami przekazanymi przez pozycję i argumentami przekazywanymi według nazwy. Procedura ma dwa parametry opcjonalne.

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

Zobacz też