Long data type (Visual Basic)
Holds signed 64-bit (8-byte) integers ranging in value from -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807 (9.2...E+18).
Long data type to contain integer numbers that are too large to fit in the
Integer data type.
The default value of
Long is 0.
You can declare and initialize a
Long variable by assigning it a decimal literal, a hexadecimal literal, an octal literal, or (starting with Visual Basic 2017) a binary literal. If the integer literal is outside the range of
Long (that is, if it is less than Int64.MinValue or greater than Int64.MaxValue, a compilation error occurs.
In the following example, integers equal to 4,294,967,296 that are represented as decimal, hexadecimal, and binary literals are assigned to
Dim longValue1 As Long = 4294967296 Console.WriteLine(longValue1) Dim longValue2 As Long = &H100000000 Console.WriteLine(longValue2) Dim longValue3 As Long = &B1_0000_0000_0000_0000_0000_0000_0000_0000 Console.WriteLine(longValue3) ' The example displays the following output: ' 4294967296 ' 4294967296 ' 4294967296
You use the prefix
&H to denote a hexadecimal literal, the prefix
&B to denote a binary literal, and the prefix
&O to denote an octal literal. Decimal literals have no prefix.
Starting with Visual Basic 2017, you can also use the underscore character,
_, as a digit separator to enhance readability, as the following example shows.
Dim longValue1 As Long = 4_294_967_296 Console.WriteLine(longValue1) Dim longValue2 As Long = &H1_0000_0000 Console.WriteLine(longValue2) Dim longValue3 As Long = &B1_0000_0000_0000_0000_0000_0000_0000_0000 Console.WriteLine(longValue3) ' The example displays the following output: ' 4294967296 ' 4294967296 ' 4294967296
Starting with Visual Basic 15.5, you can also use the underscore character (
_) as a leading separator between the prefix and the hexadecimal, binary, or octal digits. For example:
Dim number As Long = &H_0FAC_0326_1489_D68C
To use the underscore character as a leading separator, you must add the following element to your Visual Basic project (*.vbproj) file:
<PropertyGroup> <LangVersion>15.5</LangVersion> </PropertyGroup>
For more information see setting the Visual Basic language version.
Numeric literals can also include the
L type character to denote the
Long data type, as the following example shows.
Dim number = &H_0FAC_0326_1489_D68CL
Interop Considerations. If you are interfacing with components not written for the .NET Framework, for example Automation or COM objects, remember that
Longhas a different data width (32 bits) in other environments. If you are passing a 32-bit argument to such a component, declare it as
Longin your new Visual Basic code.
Longdata type widens to
Double. This means you can convert
Longto any one of these types without encountering a System.OverflowException error.
Type Characters. Appending the literal type character
Lto a literal forces it to the
Longdata type. Appending the identifier type character
&to any identifier forces it to
Framework Type. The corresponding type in the .NET Framework is the System.Int64 structure.