プロシージャのパラメーターと引数 (Visual Basic)

ほとんどの場合、プロシージャには呼び出された状況に関する情報が必要です。 反復的なタスクや共有タスクを実行するプロシージャでは、呼び出しごとに異なる情報を使用します。 この情報は、呼び出し時にプロシージャに渡す変数、定数、式で構成されます。

"パラメーター" は、プロシージャを呼び出すときに指定する必要がある値を表します。 プロシージャの宣言でパラメーターを定義します。

パラメーターなし、1 つのパラメーター、または複数のパラメーターでプロシージャを定義できます。 プロシージャ定義の、パラメーターを指定する部分は、"パラメーター リスト" と呼ばれます。

"引数" は、プロシージャを呼び出すときにプロシージャ パラメーターに指定する値を表します。 呼び出し元のコードは、プロシージャを呼び出すときに引数を指定します。 プロシージャ呼び出しの、引数を指定する部分は、"引数リスト" と呼ばれます。

次の図は、2 つの異なる場所から safeSquareRoot プロシージャを呼び出すコードを示しています。 最初の呼び出しでは、変数 x の値 (4.0) を number パラメーターに渡し、root の戻り値 (2.0) が変数 y に割り当てられます。 2 番目の呼び出しでは、リテラル値 9.0 を number に渡し、戻り値 (3.0) を変数 z に割り当てます。

Diagram that shows passing an argument to a parameter

詳細については、「Differences Between Parameters and Arguments (パラメーターと引数の違い)」をご覧ください。

パラメーターのデータ型

パラメーターのデータ型を定義するには、宣言で As 句を使用します。 たとえば、次の関数は文字列と整数を受け入れます。

Function appointment(ByVal day As String, ByVal hour As Integer) As String
    ' Insert code to return any appointment for the given day and time.
    Return "appointment"
End Function

型チェック スイッチ (Option Strict ステートメント) が Off, の場合、As 句は省略可能です。ただし、いずれか 1 つのパラメーターで使用する場合は、すべてのパラメーターで使用する必要があります。 型チェックが On の場合は、すべてのプロシージャ パラメーターで As 句が必須となります。

呼び出し元のコードが、対応するパラメーターのデータ型とは異なるデータ型の引数 (String パラメーターに対する Byte など) を指定することを要求している場合、次のいずれかを実行する必要があります。

  • パラメーターのデータ型に拡大変換するデータ型の引数のみを指定する。

  • Option Strict Off を設定して、暗黙的な縮小変換を許可する。または、

  • 変換キーワードを使用して、データ型を明示的に変換する。

型パラメーター

"ジェネリック プロシージャ" では、通常のパラメーターに加え、1 つ以上の "型パラメーター" も定義します。 ジェネリック プロシージャを使用すると、呼び出し元のコードは、プロシージャを呼び出すたびに異なるデータ型を渡すことができるため、個々の呼び出しの要件に合わせてデータ型を調整できます。 「 Generic Procedures in Visual Basic」を参照してください。

関連項目