方法: プロシージャに対してパラメーターを定義する (Visual Basic)
パラメーター は、呼び出し元のコードが値をプロシージャに渡すために使用します。プロシージャのパラメーターを宣言する場合には、変数を宣言するときと同じように、パラメーターの名前とデータ型を指定します。また、渡す方法や、パラメーターを省略できるかどうかも指定できます。
詳細については、「プロシージャのパラメーターと引数 (Visual Basic)」を参照してください。
プロシージャのパラメーターを定義するには
プロシージャの宣言中に、プロシージャのパラメーター一覧に、他のパラメーターとの間をコンマで区切ってパラメーター名を追加します。
パラメーターのデータ型を決定します。
パラメーター名の後に As 句を入力し、データ型を指定します。
パラメーターの渡し方を決定します。通常、パラメーターは値によって渡されますが、呼び出し元のコード内の値をプロシージャが変更できるように指定することもできます。
パラメーター名の前には ByVal (Visual Basic) または ByRef (Visual Basic) を指定して、渡し方を指定します。詳細については、「引数の値渡しと参照渡しの違い (Visual Basic)」を参照してください。
パラメーターが省略可能である場合、渡し方の前に 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)
概念
Function プロシージャ (Visual Basic)
オブジェクト指向プログラミング (C# および Visual Basic)