方法: プロシージャに対してパラメーターを定義する (Visual Basic)

パラメーター は、呼び出し元のコードが値をプロシージャに渡すために使用します。プロシージャのパラメーターを宣言する場合には、変数を宣言するときと同じように、パラメーターの名前とデータ型を指定します。また、渡す方法や、パラメーターを省略できるかどうかも指定できます。

詳細については、「プロシージャのパラメーターと引数 (Visual Basic)」を参照してください。

プロシージャのパラメーターを定義するには

  1. プロシージャの宣言中に、プロシージャのパラメーター一覧に、他のパラメーターとの間をコンマで区切ってパラメーター名を追加します。

  2. パラメーターのデータ型を決定します。

  3. パラメーター名の後に As 句を入力し、データ型を指定します。

  4. パラメーターの渡し方を決定します。通常、パラメーターは値によって渡されますが、呼び出し元のコード内の値をプロシージャが変更できるように指定することもできます。

  5. パラメーター名の前には ByVal (Visual Basic) または ByRef (Visual Basic) を指定して、渡し方を指定します。詳細については、「引数の値渡しと参照渡しの違い (Visual Basic)」を参照してください。

  6. パラメーターが省略可能である場合、渡し方の前に Optional (Visual Basic) を指定して、パラメーターのデータ型の後に等号 (=) と既定値を指定します。

    次の例では、3 つのパラメーターを持つ Sub プロシージャの骨組みを定義します。最初の 2 つのパラメーターは必須で、3 つ目は省略可能です。パラメーターの一覧の中で、各パラメーターの定義はコンマで区切られます。

    Sub updateCustomer(ByRef c As customer, ByVal region As String, 
      Optional ByVal level As Integer = 0)
      ' Insert code to update a customer object.
    End Sub
    

    最初のパラメーターは customer オブジェクトを受け入れ、引数は ByRef (Visual Basic) で渡されているので、updateCustomer は c に渡された変数を直接更新できます。最後の 2 つの引数は ByVal (Visual Basic) で渡されているので、プロシージャはこれらの値を変更することはできません。

    呼び出し元のコードに level パラメーターの値が指定されていない場合、Visual Basic はこれを既定値である 0 に設定します。

    型チェックのスイッチ (Option Strict ステートメント) が Off の場合、パラメーターの定義時に As 句を省略できます。しかし、いずれかのパラメーターが As 句を使用している場合は、すべてのパラメーターがこれを使用する必要があります。型チェックのスイッチが On の場合、As 句はすべてのパラメーター定義で必須です。

    すべてのプログラミング要素についてデータ型を指定することは、厳密な型指定と呼ばれます。Option Strict On を設定した場合、Visual Basic は厳密な型指定を強制します。これは、次の理由で強く推奨されています。

    • 変数に対する IntelliSense サポートが有効になります。これにより、コードの入力時に、プロパティや他のメンバーを表示できます。

    • コンパイラで型チェックを実行できます。これは、実行時にオーバーフローなどのエラーで失敗するステートメントを検出するのに役立ちます。また、オブジェクトでサポートされていないメソッドの呼び出しも検出されます。

    • コードの実行速度が速くなります。この理由の 1 つは、プログラミング要素にデータ型を指定しなかった場合、Visual Basic コンパイラが Object タイプを割り当てるためです。コンパイル済みのコードが、Object および他のデータ型との間で変換を行う必要がある場合、パフォーマンスが低下します。

参照

処理手順

方法: プロシージャに引数を渡す (Visual Basic)

概念

Visual Basic におけるプロシージャ

Sub プロシージャ (Visual Basic)

Function プロシージャ (Visual Basic)

引数の値渡しと参照渡し (Visual Basic)

再帰プロシージャ (Visual Basic)

プロシージャのオーバーロード (Visual Basic)

オブジェクト指向プログラミング (C# および Visual Basic)

その他の技術情報

Visual Basic のオブジェクトとクラス