次の方法で共有


省略可能 (Visual Basic)

プロシージャの呼び出し時にプロシージャ引数を省略できることを指定します。

注釈

省略可能なパラメーターごとに、そのパラメーターの既定値として定数式を指定する必要があります。 式が Nothing に評価された場合、値データ型の既定値がパラメーターの既定値として使用されます。

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

Optional修飾子は、次のコンテキストで使用できます。

省略可能なパラメーターの有無にかかわらずプロシージャを呼び出す場合は、引数を位置または名前で渡すことができます。 詳細については、「 位置と名前による引数の受け渡し」を参照してください。

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

例 1

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

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

次の例では、引数が position で渡され、引数が名前で渡されたプロシージャを呼び出す方法を示します。 このプロシージャには、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

こちらも参照ください