Constant and Literal Data Types (Visual Basic)

A literal is a value that is expressed as itself rather than as a variable's value or the result of an expression, such as the number 3 or the string "Hello". A constant is a meaningful name that takes the place of a literal and retains this same value throughout the program, as opposed to a variable, whose value may change.

When Option Infer is Off and Option Strict is On, you must declare all constants explicitly with a data type. In the following example, the data type of MyByte is explicitly declared as data type Byte:

Option Strict On

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

When Option Infer is On or Option Strict is Off, you can declare a constant without specifying a data type with an As clause. The compiler determines the type of the constant from the type of the expression. A numeric integer literal is cast by default to the Integer data type. The default data type for floating-point numbers is Double, and the keywords True and False specify a Boolean constant.

Literals and Type Coercion

In some cases, you might want to force a literal to a particular data type; for example, when assigning a particularly large integral literal value to a variable of type Decimal. The following example produces an error:

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

The error results from the representation of the literal. The Decimal data type can hold a value this large, but the literal is implicitly represented as a Long, which cannot.

You can coerce a literal to a particular data type in two ways: by appending a type character to it, or by placing it within enclosing characters. A type character or enclosing characters must immediately precede and/or follow the literal, with no intervening space or characters of any kind.

To make the previous example work, you can append the D type character to the literal, which causes it to be represented as a Decimal:

Dim MyDecimal As Decimal = 100000000000000000000D

The following example demonstrates correct usage of type characters and enclosing characters:

' 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!

The following table shows the enclosing characters and type characters available in Visual Basic.

Data type

Enclosing character

Appended type character

Boolean

(none)

(none)

Byte

(none)

(none)

Char

"

C

Date

#

(none)

Decimal

(none)

D or @

Double

(none)

R or #

Integer

(none)

I or %

Long

(none)

L or &

Short

(none)

S

Single

(none)

F or !

String

"

(none)

See Also

Tasks

How to: Declare A Constant (Visual Basic)

How to: Declare Enumerations (Visual Basic)

Reference

Option Strict Statement

Option Explicit Statement (Visual Basic)

Data Type Summary (Visual Basic)

Concepts

User-Defined Constants (Visual Basic)

Constants Overview (Visual Basic)

Enumerations Overview (Visual Basic)

Enumerations and Name Qualification (Visual Basic)

Constants and Enumerations (Visual Basic)

Change History

Date

History

Reason

May 2011

Modified information about type inference.

Content bug fix.