今回は、VB.NETでメソッドへ引数を渡す際の『値渡し』と『参照渡し』の違いについてご紹介します。
値渡し
メソッドへ値をコピーして渡すため、引数に指定した元の値は変化しません。
値渡しを行うには、呼び出されるメソッド側に「ByVal」キーワードを指定する必要があります。
メソッド名(ByVal 変数名)
サンプル
それではサンプルを見てみましょう。
Console.WriteLineを使って、値渡しでメソッドを実行した後の、引数に指定した変数の値をコンソールに出力します。
1 2 3 4 5 6 7 8 9 10 |
Sub Main() Dim a As Integer = 1 TestByval(a) Console.WriteLine(a) End Sub Sub TestByval(ByVal a As Integer) a = a * 10 End Sub |
実行結果
上記を実行し、コンソールに表示された結果がこちらです。
実行結果
1
TestByvalメソッドを実行した後も、引数に指定した元の変数「a」の値は変化していないのがわかります。
参照渡し
メソッドへ値が入った場所(アドレス)を渡すため、メソッドの中で値が変化すると元の値も変更されます。
参照渡しを行うには、呼び出されるメソッド側に「ByRef」キーワードを指定する必要があります。
メソッド名(ByRef 変数名)
サンプル
それではサンプルを見てみましょう。
Console.WriteLineを使って、参照渡しでメソッドを実行した後の、引数に指定した変数の値をコンソールに出力します。
1 2 3 4 5 6 7 8 9 10 |
Sub Main() Dim a As Integer = 1 TestByref(a) Console.WriteLine(a) End Sub Sub TestByref(ByRef a As Integer) a = a * 10 End Sub |
実行結果
上記を実行し、コンソールに表示された結果がこちらです。
実行結果
10
TestByrefメソッドを実行後、引数に指定した元の変数「a」の値も変化しているのがわかります。
最後に
VB.NETで『メソッドへ引数を渡す際の「値渡し」と「参照渡し」の違い』についてのご紹介は以上です。
どなたかのお役に立てていれば幸いです。
関連記事