カテゴリ: VB.NET 更新日: 2025/11/22

VB.NETで引数を使う方法!ByValとByRefの違いを初心者向け解説

VB.NETで引数を使う方法(ByVal・ByRefの違い)
VB.NETで引数を使う方法(ByVal・ByRefの違い)

先生と生徒の会話形式で理解しよう

生徒

「先生、VB.NETでメソッドに値を渡すときにByValとByRefってどう違うんですか?」

先生

「ByValは『値渡し』で、ByRefは『参照渡し』です。簡単に言うと、ByValはコピーを渡すので元の値は変わらず、ByRefは直接変数を渡すので元の値も変更されます。」

生徒

「コピーと直接渡すって、どんなイメージですか?」

先生

「例えば、お菓子の箱を渡すと考えます。ByValは箱の中身を写真で送るようなもので、中身を変えても元の箱は変わりません。ByRefは箱そのものを渡すので、中身を変えると元の箱も変わります。」

1. ByVal(値渡し)の使い方

1. ByVal(値渡し)の使い方
1. ByVal(値渡し)の使い方

VB.NETでByValを使うと、引数のコピーをメソッドに渡します。メソッド内で値を変更しても、元の変数には影響しません。


Sub ChangeValueByVal(ByVal x As Integer)
    x = x + 10
    Console.WriteLine("メソッド内の値: " & x)
End Sub

Dim num As Integer = 5
ChangeValueByVal(num)
Console.WriteLine("元の値: " & num)

メソッド内の値: 15
元の値: 5

この例ではxの値はメソッド内で変わっていますが、numの値は変わりません。ByValは元の値を安全に保ちたいときに便利です。

2. ByRef(参照渡し)の使い方

2. ByRef(参照渡し)の使い方
2. ByRef(参照渡し)の使い方

ByRefを使うと、変数そのものを渡すため、メソッド内で値を変更すると元の変数も変わります。


Sub ChangeValueByRef(ByRef x As Integer)
    x = x + 10
    Console.WriteLine("メソッド内の値: " & x)
End Sub

Dim num As Integer = 5
ChangeValueByRef(num)
Console.WriteLine("元の値: " & num)

メソッド内の値: 15
元の値: 15

ByRefは、関数やSubから元の変数を直接変更したい場合に使います。例えばカウンタや集計値を更新する場合に便利です。

3. ByValとByRefを使い分けるポイント

3. ByValとByRefを使い分けるポイント
3. ByValとByRefを使い分けるポイント

どちらを使うかは「元の値を変更したいかどうか」で決めます。

  • 値を安全に渡したい場合はByVal
  • 元の変数を更新したい場合はByRef

また、FunctionやSubに複数の引数がある場合、ByValとByRefを組み合わせて使うこともできます。

4. 実用例:計算と値更新

4. 実用例:計算と値更新
4. 実用例:計算と値更新

例えば、VB.NETで合計値を計算して返す場合はFunctionでByValを使い、処理中に元の変数も更新したい場合はByRefを使うと便利です。


Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
    Return a + b
End Function

Sub UpdateCounter(ByRef counter As Integer)
    counter += 1
End Sub

Dim total As Integer = Add(3, 7)
Console.WriteLine("合計: " & total)

Dim count As Integer = 0
UpdateCounter(count)
Console.WriteLine("カウント: " & count)

合計: 10
カウント: 1

このようにByValとByRefを適切に使い分けることで、VB.NETのメソッドはより安全で効率的に利用できます。

5. まとめると

5. まとめると
5. まとめると

VB.NETで引数を渡すときは、ByValByRefの違いを意識しましょう。値をコピーして渡す場合はByVal、元の変数を直接更新する場合はByRefを使います。初心者でもこの違いを理解すると、プログラムの挙動を正しく制御できます。

カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETの例外処理でよくあるアンチパターンと注意点を初心者向けに徹底解説
New2
ASP.NET
ASP.NET WebFormsのGridViewでデータ表示を完全マスター!初心者向けガイド
New3
VB.NET
VB.NETの例外処理とパフォーマンスの関係を初心者向けに完全解説
New4
ASP.NET
ASP.NET WebFormsでデータベースと連携!初心者でもできる保存と表示の基本
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのEnum(列挙型)の使い方を完全解説!初心者にも分かる定義と活用方法
No.2
Java&Spring記事人気No2
VB.NET
VB.NETのBoolean型(True/False)の使い方と条件分岐での活用方法を徹底解説!初心者でも理解できる基本
No.3
Java&Spring記事人気No3
VB.NET
VB.NETのIf文の使い方と条件分岐を完全ガイド!初心者でもわかる基本構文と実例
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.5
Java&Spring記事人気No5
VB.NET
VB.NETプログラムの実行方法まとめ!Visual Studio・コマンドラインの使い方
No.6
Java&Spring記事人気No6
VB.NET
VB.NETの例外処理を完全ガイド!初心者でもわかるSystem.Exceptionの仕組み
No.7
Java&Spring記事人気No7
VB.NET
VB.NETのコンストラクタと初期化処理の書き方を初心者向けに解説
No.8
Java&Spring記事人気No8
VB.NET
VB.NETでの変数名の付け方とは?わかりやすくエラーの起きにくい命名規則を紹介