カテゴリ: VB.NET 更新日: 2025/12/14

VB.NETの定数とReadOnlyを完全解説!初心者でもわかる使い分け方法

VB.NETで定数とReadOnlyを使い分ける方法
VB.NETで定数とReadOnlyを使い分ける方法

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

生徒

「先生、VB.NETで変わらない値を扱いたいときはどうすればいいんですか?」

先生

「そういう場合にはConst(定数)ReadOnlyを使います。」

生徒

「ConstとReadOnlyって似ているように聞こえるんですが、何が違うんですか?」

先生

「とても大事なポイントです。今日はConstとReadOnlyの違いと使い分け方を、初心者向けに丁寧に解説していきましょう。」

1. Const(定数)とは?

1. Const(定数)とは?
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とは?

2. ReadOnlyとは?
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の違い

3. ConstとReadOnlyの違い
3. ConstとReadOnlyの違い

ConstとReadOnlyはどちらも「変更できない値」を表しますが、以下のように違いがあります。

項目 Const(定数) ReadOnly
値を決めるタイミング コンパイル時(プログラムを作るときに決まる) 実行時(プログラムが動いたときに決まる)
初期化方法 宣言と同時に代入が必須 宣言と同時、またはコンストラクタで代入可能
使う場面 円周率、固定の税率など変わらない値 現在時刻、外部から取得する設定値など実行時に決まる値

4. Constを使うと便利なケース

4. Constを使うと便利なケース
4. Constを使うと便利なケース

Constは次のようなケースで便利です。

  • 円周率(3.14159)や光の速度など普遍的な数値
  • アプリケーションで使う固定の設定値(例えば「最大ユーザー数」や「APIのバージョン番号」)
  • 計算式に繰り返し使う値をまとめて管理したいとき

Const MaxUsers As Integer = 100

Console.WriteLine("このシステムの最大利用者数は " & MaxUsers & " 人です")

このシステムの最大利用者数は 100 人です

5. ReadOnlyを使うと便利なケース

5. ReadOnlyを使うと便利なケース
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の使い分けのポイント

6. ConstとReadOnlyの使い分けのポイント
6. ConstとReadOnlyの使い分けのポイント

最後に、ConstとReadOnlyの使い分けをまとめます。

  • 値が絶対に変わらない → Constを使う
  • 実行時に決まるけど、その後は変更させたくない → ReadOnlyを使う

このように意図を明確にすることで、VB.NETのプログラムは読みやすく、ミスが少ないものになります。

まとめ

まとめ
まとめ

VB.NETで変わらない値を扱うときは、ConstReadOnlyを使い分けることが重要です。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で定数や読み取り専用の値を適切に扱えるようになります。」

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