VB.NETの定数とReadOnlyを完全解説!初心者でもわかる使い分け方法
生徒
「先生、VB.NETで変わらない値を扱いたいときはどうすればいいんですか?」
先生
「そういう場合にはConst(定数)やReadOnlyを使います。」
生徒
「ConstとReadOnlyって似ているように聞こえるんですが、何が違うんですか?」
先生
「とても大事なポイントです。今日はConstとReadOnlyの違いと使い分け方を、初心者向けに丁寧に解説していきましょう。」
1. Const(定数)とは?
Const(定数)とは、プログラム内で絶対に変わらない値を表すための仕組みです。たとえば「円周率」「消費税率」「最大人数」など、プログラムの実行中に変わらない値を表現します。
Constを使うとコードの見通しが良くなり、「この値は変わらないんだ」という意図が明確になります。
Const Pi As Double = 3.14159
Const TaxRate As Double = 0.1
Console.WriteLine("円周率は " & Pi)
Console.WriteLine("消費税率は " & TaxRate)
円周率は 3.14159
消費税率は 0.1
Constで定義した値はプログラムが始まる前に固定されるので、途中で変更することはできません。
2. ReadOnlyとは?
ReadOnlyは「読み取り専用」の意味で、基本的には一度決まったら変更できない変数を表します。ただし、Constと違って実行時に値を決められるのが特徴です。
Public Class Sample
Public ReadOnly CreatedAt As DateTime
Public Sub New()
CreatedAt = DateTime.Now ' 実行時に値を設定できる
End Sub
End Class
Dim s As New Sample()
Console.WriteLine(s.CreatedAt)
このようにReadOnlyはコンストラクタ(初期化処理)で値を代入できるため、「プログラムを動かしてみないとわからない値」に使うことができます。
3. ConstとReadOnlyの違い
ConstとReadOnlyはどちらも「変更できない値」を表しますが、以下のように違いがあります。
| 項目 | Const(定数) | ReadOnly |
|---|---|---|
| 値を決めるタイミング | コンパイル時(プログラムを作るときに決まる) | 実行時(プログラムが動いたときに決まる) |
| 初期化方法 | 宣言と同時に代入が必須 | 宣言と同時、またはコンストラクタで代入可能 |
| 使う場面 | 円周率、固定の税率など変わらない値 | 現在時刻、外部から取得する設定値など実行時に決まる値 |
4. Constを使うと便利なケース
Constは次のようなケースで便利です。
- 円周率(3.14159)や光の速度など普遍的な数値
- アプリケーションで使う固定の設定値(例えば「最大ユーザー数」や「APIのバージョン番号」)
- 計算式に繰り返し使う値をまとめて管理したいとき
Const MaxUsers As Integer = 100
Console.WriteLine("このシステムの最大利用者数は " & MaxUsers & " 人です")
このシステムの最大利用者数は 100 人です
5. ReadOnlyを使うと便利なケース
ReadOnlyは次のようなケースで便利です。
- プログラムが動いて初めて決まる値(例:現在時刻、環境設定ファイルから読み込む値)
- オブジェクトの作成時に一度だけ決まり、その後変更されない情報(例:登録日時、システム開始時刻)
- 外部から与えられるけど一度セットしたら変更できない値
Public Class User
Public ReadOnly RegisteredAt As DateTime
Public Sub New()
RegisteredAt = DateTime.Now
End Sub
End Class
Dim u As New User()
Console.WriteLine("ユーザー登録日時: " & u.RegisteredAt)
6. ConstとReadOnlyの使い分けのポイント
最後に、ConstとReadOnlyの使い分けをまとめます。
- 値が絶対に変わらない → Constを使う
- 実行時に決まるけど、その後は変更させたくない → ReadOnlyを使う
このように意図を明確にすることで、VB.NETのプログラムは読みやすく、ミスが少ないものになります。
まとめ
VB.NETで変わらない値を扱うときは、ConstとReadOnlyを使い分けることが重要です。Constはコンパイル時に値が固定され、絶対に変更されない値を表します。一方、ReadOnlyは実行時に値を決められるため、プログラムが動いて初めて決まる値を扱うときに便利です。これにより、意図を明確にしたプログラムを書くことができ、保守性や可読性が向上します。
具体的には、円周率や固定の税率、アプリケーションの設定値のように絶対に変わらない値にはConstを使用し、ユーザー登録日時や現在時刻、外部から取得する設定値のように実行時に決まる値にはReadOnlyを使います。また、ReadOnlyはコンストラクタで初期化できるため、オブジェクト生成時に一度だけ値を設定するパターンにも適しています。
サンプルプログラム:ConstとReadOnlyの活用例
' Constの例
Const Pi As Double = 3.14159
Const TaxRate As Double = 0.1
Console.WriteLine("円周率は " & Pi)
Console.WriteLine("消費税率は " & TaxRate)
' ReadOnlyの例
Public Class User
Public ReadOnly RegisteredAt As DateTime
Public Sub New()
RegisteredAt = DateTime.Now
End Sub
End Class
Dim u As New User()
Console.WriteLine("ユーザー登録日時: " & u.RegisteredAt)
円周率は 3.14159
消費税率は 0.1
ユーザー登録日時: 2025/12/08 14:30:00
生徒
「先生、ConstとReadOnlyって似ているように見えますけど、どう使い分ければ良いんですか?」
先生
「Constは絶対に変わらない値を表すときに使います。円周率や固定の税率など、プログラム実行前に決まる値です。」
生徒
「なるほど、じゃあReadOnlyは?」
先生
「ReadOnlyは実行時に値を決められ、初期化後は変更できません。ユーザー登録日時や現在時刻、外部から取得する設定値などに向いています。」
生徒
「コンストラクタで値を設定できるのが便利ですね!」
先生
「その通りです。これを理解しておくと、VB.NETのプログラムで変更すべきでない値を安全に管理でき、コードの可読性も保たれます。」
生徒
「値が絶対に変わらない場合はConst、実行時に決まる値はReadOnlyと覚えれば間違えなさそうです!」
先生
「そうですね。初心者でもこのポイントを押さえておけば、VB.NETで定数や読み取り専用の値を適切に扱えるようになります。」