カテゴリ: VB.NET 更新日: 2026/03/08

VB.NETで定数を定義する方法!ConstとReadOnlyの違いを初心者向けに徹底解説

VB.NETで定数を定義する方法!ConstとReadOnlyの違いを理解しよう
VB.NETで定数を定義する方法!ConstとReadOnlyの違いを理解しよう

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

生徒

「VB.NETで数字や文字をずっと変わらない値として使いたいんですが、どうすればいいですか?」

先生

「それには“定数”という仕組みを使います。VB.NETではConstReadOnlyの2つの方法があります。」

生徒

「ConstとReadOnlyってどちらも定数ってことですか?」

先生

「名前は似ていますが、少し違いがあります。順番にわかりやすく解説していきましょう。」

1. 定数(Const・ReadOnly)とは?

1. 定数(Const・ReadOnly)とは?
1. 定数(Const・ReadOnly)とは?

VB.NETでいう定数とは、「絶対に変えてはいけない値」を名前を付けて保存しておく仕組みです。プログラムの途中で値が変わらないため、どこから読んでも意味が分かりやすくなります。例えば買い物のアプリを作るときに、毎回「0.1」や「3.14159」と数字だけ書くよりも、名前を付けておく方がミスを防げます。

実際にどれくらい便利か、簡単な例を見てみましょう。


' 定数がない場合
Dim price As Integer = 1000
Dim tax As Double = price * 0.1

' 定数を使う場合
Const 消費税率 As Double = 0.1
Dim price2 As Integer = 1000
Dim tax2 As Double = price2 * 消費税率

下の書き方のほうが「何の0.1なのか」が一目で分かりますよね。定数を使うとプログラムの意味が伝わりやすく、あとで読み返しても迷いません。

定数を使うメリットは次の通りです。

  • プログラムの読みやすさが上がる
  • 数字や文字をうっかり変更してしまうのを防げる
  • 値を変更したいときも1か所直すだけで済む

そしてVB.NETでは、定数を作る方法が2つ用意されています。それがConstReadOnlyです。同じ「変わらない値」でも、使い道や考え方に少し違いがあります。

2. Constとは?

2. Constとは?
2. Constとは?

Constは「書いた瞬間に値が決まる定数」です。プログラムを実行している途中で変えることは絶対にできません。「絶対に変えてはいけない数字」や「固定の文字」を使うときに便利で、ミスを防ぎながらコードを読みやすくできます。

例えば次のように使います。


Const 消費税率 As Double = 0.1
Const 円周率 As Double = 3.14159
Const アプリ名 As String = "サンプル電卓"

どれも途中で書き換えることはできません。数字だけでは意味が分かりにくい場面でも、名前を付けておくことで「これは何の数字なのか」が一目で分かります。

実際にプログラムの中で使う例を見てみましょう。


Const 消費税率 As Double = 0.1
Dim 金額 As Integer = 1000

' 税込みを計算
Dim 税込価格 As Double = 金額 * (1 + 消費税率)

Console.WriteLine("税込価格は " & 税込価格 & " 円です")

税込価格は 1100 円です

毎回「0.1」と書かずに済むため、値を変更したい時もConst 消費税率の1行を変更するだけで全体に反映できます。こうした点から、Constは「変える必要のない値」を扱うときにとても役立つ仕組みです。

3. ReadOnlyとは?

3. ReadOnlyとは?
3. ReadOnlyとは?

ReadOnlyは「あとから変更できない変数」です。Constとよく似ていますが、大きな違いは値を決めるタイミングです。Constはプログラムを書く段階で値を決めますが、ReadOnlyは「プログラムが実行されたとき」に値を設定できます。

例えば、アプリを起動した時間を記録したい場合、実行するたびに時間が変わりますよね。こういった“実行してみないと決まらない値”はConstには入れられませんが、ReadOnlyなら使えます。


ReadOnly 起動した時間 As DateTime = DateTime.Now
Console.WriteLine("起動した時刻: " & 起動した時間)

この変数は、プログラムが動いた瞬間の時刻が入ります。一度入った値は変更できないので、途中で書き換えられる心配がありません。

ReadOnlyはクラス内でよく使われます。オブジェクトが作られたときの情報を残したいときに便利です。


Class ログ
    Public ReadOnly 作成日時 As DateTime

    Public Sub New()
        作成日時 = DateTime.Now
    End Sub
End Class

この例では、ログの情報を作った時点の日時をそのまま記録できます。外部から勝手に書き換えられないため、「いつ作られたのか」を正確に残せるのがReadOnlyの強みです。

4. ConstとReadOnlyの違い

4. ConstとReadOnlyの違い
4. ConstとReadOnlyの違い

ここで一度、ConstReadOnlyの違いを整理してみましょう。

特徴 Const ReadOnly
値を決めるタイミング プログラムを書いたとき(コンパイル時) プログラムが動いたとき(実行時)
再代入 できない できない(ただし初期化時のみ代入可能)
主な用途 円周率・税率・固定の文字列など 日時・ランダムなID・外部から渡される値など

つまり「プログラムを書くときにもう決まっている値」ならConst、「実行してみないとわからないけど変更してほしくない値」ならReadOnlyを選ぶと覚えると分かりやすいです。

5. 実生活で例えると?

5. 実生活で例えると?
5. 実生活で例えると?

イメージしやすいように、実生活の例で考えてみましょう。

  • Constは「歴史の事実」… 例えば「1年は365日」という事実は変わりません。
  • ReadOnlyは「日記に書いた日付」… その日付は一度書いたら変えられませんが、書くときに決まります。

このように考えると違いがぐっと理解しやすくなります。

6. 初心者が気をつけるポイント

6. 初心者が気をつけるポイント
6. 初心者が気をつけるポイント

最後にVB.NET初心者がよくつまずくポイントをまとめます。

  • Constには数値や文字列のような「決まった値」しか代入できない
  • ReadOnlyはクラスやモジュールの中で使うことが多い
  • 「ConstなのかReadOnlyなのか」でエラーが出たら「値が実行時に決まるものかどうか」を考えると解決しやすい

最初は混乱するかもしれませんが、実際に使いながら覚えていくのがおすすめです。

まとめ

まとめ
まとめ

VB.NETで定数を使うと、プログラムが分かりやすくなり、予期しない変更やミスを防ぐことができます。特に「よく使う値」や「変わると困る情報」を定数にまとめておくと、後からコードを見返したときにも迷いません。今回紹介したConstReadOnlyは、どちらも「変更できない値」を扱いますが、決まるタイミングが違うという部分が重要なポイントでした。

例えば、消費税率や円周率のように「最初から決まっている値」はConstが向いています。一方で、プログラムを実行したときに決まる値、たとえば現在の日時や外部から受け取った値などはReadOnlyのほうが活躍します。同じ「変わらない値」でも、状況で使い分けると、より安全で読みやすいコードになるのがVB.NETの面白いところです。

簡単なサンプルでおさらい


Const アプリ名 As String = "定数サンプル"
ReadOnly 起動時刻 As DateTime = DateTime.Now

Console.WriteLine(アプリ名)
Console.WriteLine("起動した時間: " & 起動時刻)

このように、Constは最初から変わらない名前を持った値を扱い、ReadOnlyは実行したときに決まる情報を扱います。どちらも特別な書き方ではなく、普段のVB.NETのコードに自然に馴染むのも魅力です。最初は難しく感じるかもしれませんが、実際に書いて動かしてみるとすぐに違いが見えてきます。

先生と生徒の振り返り会話

生徒

「ConstとReadOnlyの違い、やっと分かってきました!」

先生

「良かったです。特に“いつ値が決まるか”を意識できると、使い分けがぐっと楽になりますよ。」

生徒

「消費税率みたいに絶対変わらないものはConst、時間みたいに実行してみないと分からないものはReadOnly…で覚えます!」

先生

「その考え方で大丈夫です。VB.NETでは定数をうまく使うとコードがとても読みやすくなるので、少しずつ実践してみましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

VB.NETのConstとReadOnlyはどちらも定数ですが、初心者の自分はどっちを使えばいいですか?

VB.NETのConstとReadOnlyはどちらも「値を変更させないための仕組み」ですが、決めるタイミングが違います。プログラムを書く時点で値が確定しているならConst、実行してみないと決まらない値(現在日時やランダム値など)はReadOnlyを使うのがVB.NETの基本的な使い分けです。初心者はまず「書いた瞬間に決まっている値=Const」「実行時に決まる値=ReadOnly」と覚えると失敗しにくいです。

VB.NETのConstは後から変更できないと書いてありましたが、もし変更したいときはどうしたらいいですか?

VB.NETのConstはコンパイル時に値が固定されるため、後から変更することはできません。もし変更の可能性があるならConstではなく変数を使うか、実行時に決定可能なReadOnlyを使用します。Constにしてしまうと、コードの修正→再コンパイルが必須になるため、「本当に変更不要な値」だけをConstにするのがVB.NETでの安全な設計です。
関連記事:
カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETの変数とは?初心者向けに定義方法とよく使うデータ型を解説
New2
ASP.NET
ASP.NET MVCでモデルを定義してデータを扱う方法を初心者向けに解説
New3
ASP.NET
ASP.NETのマイグレーションを使ったスキーマ管理方法を完全解説!初心者でも安心
New4
ASP.NET
MacでASP.NET開発を始める方法|初心者向けにVisual Studioと.NET SDKを解説
人気記事
No.1
Java&Spring記事人気No1
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説
No.2
Java&Spring記事人気No2
ASP.NET
ASP.NET WebFormsとは?基本概念と仕組みを初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.4
Java&Spring記事人気No4
VB.NET
VB.NETプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
VB.NET
VB.NETで日付を加算・減算する方法を完全ガイド!AddDaysやAddMonthsの使い方
No.6
Java&Spring記事人気No6
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.7
Java&Spring記事人気No7
VB.NET
VB.NETで日付と時間を比較・計算する方法!CompareとSubtractを完全解説
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NET MVCのフォーム送信とPOSTデータの受け取り方を完全解説!初心者でもわかる入力処理の基本