定数とリテラルのデータ型 (Visual Basic)

リテラルとは、数字の 3 や文字列 "Hello" など、変数値や式の結果ではなく、それ自体として表される値のことです。 定数とは、リテラルの代わりとなるわかりやすい名前のことです。プログラム内で値が変わりうる変数とは異なり、プログラム全体で同じ値を保持します。

Option InferOff を指定し、Option StrictOn を指定した場合、すべての定数にデータ型を指定して明示的に宣言する必要があります。 次の例では、MyByte のデータ型をデータ型 Byte として明示的に宣言しています。

Option Strict On

Public Class Sample
  Public Const MyByte As Byte = 2
End Class

Option InferOn を指定するか、Option StrictOff を指定している場合は、As 句でデータ型を指定することなく定数を宣言できます。 コンパイラは、式の型から定数の型を判断します。 既定では、数値整数型のリテラルは Integer データ型にキャストされます。 浮動小数点数の既定のデータ型は Double であり、 Boolean 定数は TrueFalse の各キーワードで指定します。

リテラルと強制型変換

Decimal 型変数に非常に大きな整数型リテラルの値を割り当てる場合など、リテラルの特定のデータ型への強制変換が必要になることがあります。 次の例ではエラーが発生します。

Dim myDecimal as Decimal  
myDecimal = 100000000000000000000   ' This causes a compiler error.  

このエラーの原因は、リテラルの表現にあります。 Decimal データ型はこの大きさの値を保持できますが、リテラルは暗黙的に Long として表現されるので、値を保持できません。

リテラルは、2 つの方法で特定のデータ型に強制的に変換できます。1 つは型文字をリテラルに追加することであり、もう 1 つは囲み文字内にリテラルを配置することです。 型文字と囲み文字は、リテラルの直前または直後に、スペースや文字を挟まずに配置する必要があります。

前述の例を機能させるには、リテラルに D 型文字を追加します。これにより、リテラルが Decimal として表現されます。

Dim MyDecimal As Decimal = 100000000000000000000D

型文字と囲み文字の正しい使用方法を、次の例に示します。

' Default to Integer.
Public Const DefaultInteger As Integer = 100

' Default to Double.
Public Const DefaultDouble As Double = 54.3345612

' Force constant to be type Char.
Public Const MyCharacter As Char = "a"c

' DateTime constants.
Public Const MyDate As DateTime = #1/15/2001#
Public Const MyTime As DateTime = #1:15:59 AM#

' Force data type to be Long.
Public Const MyLong As Long = 45L

' Force data type to be Single.
Public Const MySingle As Single = 45.55!

Visual Basic で利用可能な囲み文字と囲み文字を、次の表に示します。

データの種類 囲み文字 追加する型文字
Boolean (なし) (なし)
Byte (なし) (なし)
Char " C
Date # (なし)
Decimal (なし) D または @
Double (なし) R または #
Integer (なし) I または %
Long (なし) L または &
Short (なし) S
Single (なし) F または !
String " (なし)

関連項目