Optional (Visual Basic)

プロシージャを呼び出すとき省略できる引数であることを示すキーワードです。

解説

各省略可能なパラメーターに対して、このパラメーターの既定値として定数式を指定します。式が 何もと評価されると、パラメーターの既定値として値のデータ型の既定値が使用されます。

パラメーター リストに省略可能なパラメーターが含まれている場合、後続のすべてのパラメーターは、すべて省略可能である必要があります。

修飾子 Optional は、次の構文で使用します。

[!メモ]

プロシージャを省略可能なパラメーターなしで呼び出すと、によってまたは名前の引数を位置渡すことができます。詳細については、「位置と名前による引数渡し (Visual Basic)」を参照してください。

[!メモ]

また、オーバーロードを使用して、省略可能なパラメーターのプロシージャを定義できます。1 種類の省略可能なパラメーターがある場合、パラメーターを受け入れるとして手順 1、 1 の 2 種類のオーバーロードされたバージョンを定義できます。詳細については、「プロシージャのオーバーロード (Visual Basic)」を参照してください。

使用例

次の例は、省略可能なパラメーターを持つプロシージャを定義しています。

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

次の例では、場所を渡された引数と名前で渡された引数のプロシージャをダイヤルする方法を示します。プロシージャに 2 個の省略可能なパラメーターがあります。

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

参照

関連項目

パラメーターの一覧 (Visual Basic)

概念

省略可能なパラメーター (Visual Basic)

その他の技術情報

キーワード (Visual Basic)