ヘッダー
Visual Basic サンプル集
VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

定数の宣言

2021/2/28

→ C# のサンプルに切り替える

 

一般的な定数の宣言

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Const minFileCount As Integer = 2

Const bigNumber As Integer = 120_000_000 '数字の間の _ は無視されるので桁区切りに使用できます。(VB2017以上)

Const maxFileCount As Integer = minFileCount + 8 '定数の値に定数を指定できます。
 
Const companyName As String = "Visual Basic 中学校"

Const firstCode As Integer = AscW("あ") '一部の変換関数を使って値を計算できます。

Const surface As Double = 5 * 5 * Math.PI

Const baseDate As Date = #2/14/2021#

メモ:定数で使用できる型はプリミティブ型(Integer, String, Longなどの基本的な型)か列挙型のみです。

 

 

型推論:型を自動的に決定させる

ローカル定数の場合、型名を省略してもVBが型を決定してくれます。これを型推論と呼びます。

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Const number1 = 123 'Integer になります。
Const totalPoint = 100 + 52 'Integer になります。
Const average = 100 / 32 'Double になります。
Const message = "Hello!" 'String になります。
Const expireDate = #6/27/2024# 'Date になります。
Const oString As Object = "あいう" 'Stringになります。※As Objectと記述しても推論されます。

メモ:どのような型になったかは、マウスカーソルを変数名の上にホバーさせると表示されます。

 

 

複数の定数の宣言

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Const x As Integer = 1, y As Integer = 2, z As Integer = 3

Const firstName = "権兵衛", lastName = "名無しの", age = 20

メモ:こんな書き方をしている人は見たことがありません。わかりにくいので1行ずつ定数を宣言しましょう。

 

 

型文字を使って型を指定する

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Const number1% = 123 'Integer になります。
Const maxPoint& = 123 'Long になります。
Const initialAverage@ = 15.5D 'Decimal になります。
Const message$ = "{0}:{1}" 'String になります。
Const rate! = 120.2 'Single になります。
Const arg# = Math.PI 'Double になります。

メモ:型文字はこの6種類ですべてです。

メモ:この宣言方法はとてもわかりにくいので使用すべきではありません。

 

 

特殊な名前の定数

変数名を [ ] で囲むと予約語と同じ名前の定数を宣言できます。

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Const [Dim] As Integer = 123

Const [Sub] As String = "ABC"

メモ:このような定数名はそもそも使用すべきではありません。

 

 

アクセスレベル(Public, Privateなど)を指定

クラスレベルの定数はPublic, Protected, Private などアクセスレベルを指定するキーワードを使って宣言できます。これらを省略してConstのみで宣言した場合は Private と同じ効果です。

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Public Const DefaultSku As String = "Z-001"

Private Const defaultCache As Boolean = False

 

 

参考:できそうでできないこと

  • クラスや構造体・配列などの定数は作成できません。
  • つまり、定数の宣言時に New を使用することはできません。
  • 定数の値を設定するときにほとんどの関数は使用できません。

 

 

参考:定数にできないときの代替手段

上記のような制限で困る場合、Shared ReadOnly で宣言できる読み取り専用の共有変数がクラスレベルの定数に代わりになりえます。

Public Shared ReadOnly numbers() As Integer = {1, 1, 2, 3, 5, 8, 13}

Public Shared ReadOnly logWriter As New IO.StreamWriter("C:\temp\log.txt")

Public Shared ReadOnly basePoint As New Point(10, 20)

 

参考

Const ステートメント - Visual Basic | Microsoft Docs

 


VB6対応 VB6でもConstを使います。