次の方法で共有


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

パラメーターを使用すると、呼び出し元のコードは、呼び出し時にプロシージャに値を渡すことができます。 プロシージャの各パラメーターは、変数を宣言するのと同じ方法で宣言し、その名前とデータ型を指定します。 また、渡しメカニズムと、パラメーターが省略可能かどうかを指定します。

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

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

  1. プロシージャ宣言で、パラメーター名をプロシージャのパラメーター リストに追加し、他のパラメーターからコンマで区切ります。

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

  3. パラメーター名に As 句を付けて、データ型を指定します。

  4. パラメーターに必要な受け渡しメカニズムを決定します。 通常、プロシージャが呼び出し元のコードでその値を変更できるようにする場合を除き、パラメーターを値で渡します。

  5. 渡すメカニズムを指定するには、パラメーター名の前に ByVal または ByRef を付けます。 詳細については、「 引数を値渡しと参照渡しの違い」を参照してください

  6. パラメーターが省略可能な場合は、渡しメカニズムの前に Optional を 指定し、等号 (=) と既定値でパラメーターのデータ型に従います。

    次の例では、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 オブジェクトを受け取り、updateCustomerは引数が ByRef を渡されるため、cに渡された変数を直接更新できます。 プロシージャは ByVal を渡されるため、最後の 2 つの引数の値を変更できません。

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

    型チェック スイッチ (Option Strict ステートメント) が Off場合、パラメーターを定義するときに、 As 句は省略可能です。 ただし、1 つのパラメーターで As 句を使用する場合は、すべてのパラメーターで使用する必要があります。 型チェック スイッチが On場合は、すべてのパラメーター定義に対して As 句が必要です。

    すべてのプログラミング要素のデータ型を指定することは、 厳密な型指定と呼ばれます。 Option Strict Onを設定すると、Visual Basic では厳密な入力が強制されます。 これは、次の理由から強くお勧めします。

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

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

    • その結果、コードの実行時間が短縮されます。 その理由の 1 つは、プログラミング要素のデータ型を指定しない場合、Visual Basic コンパイラによって Object 型が割り当てられるということです。 コンパイル済みのコードでは、 Object と他のデータ型の間でやり取りする必要があり、パフォーマンスが低下します。

こちらも参照ください