数値および文字列のリテラルにサフィックスを付けることで、リテラルの型を明示的に指定することができます。 また、VBではサフィックスの他にも型文字と呼ばれる記号を付けることでも型を指定することができます。 なお、以下の表中では明記していませんが、VBでもサフィックスを小文字で指定できます。
特にリテラルを指定しない場合、数値型では(基本的には)int
/Integer
、実数型ではdouble
/Double
として扱われ、代入に際しては代入先の型に変換されます。
.NET | C# | VB | ||||||
---|---|---|---|---|---|---|---|---|
型 | 型 | サフィックス | リテラルの例 | 型 | サフィックス | 型文字 | リテラルの例 | |
整数型 | System.SByte | sbyte | - | - | SByte | - | - | - |
System.Int16 | short | - | - | Short |
S
|
- |
1024S
|
|
System.Int32 | int | - |
100000
|
Integer |
I
|
%
|
100000
100000I
100000%
|
|
System.Int64 | long |
L/l
(数字 1 (one)を混同する可能性があるため、l (small L)を使用するとコンパイル時に警告となる) |
200L
3000000000l
|
Long |
L
|
&
|
00L
3000000000&
|
|
System.Byte | byte | - | - | Byte | - | - | - | |
System.UInt16 | ushort | - | - | UShort |
US
|
- |
2048US
|
|
System.UInt32 | uint |
u/U
|
12u
12U
|
UInteger |
UI
|
- |
12UI
|
|
System.UInt64 | ulong |
ul/LU など(大文字小文字・ U とL の順序は自由) |
200ul
3000000000Lu
|
ULong |
UL
|
- |
3000000000UL
|
|
実数型 | System.Single | float |
f/F
|
1.0f
1.0F
|
Single |
F
|
!
|
1.0F
1.0!
|
System.Double | double |
d/D
|
3.14
3.14d
3.14D
|
Double |
R
|
#
|
3.14
3.14R
3.14#
|
|
System.Decimal | decimal |
m/M
|
0.66666666m
0.66666666M
|
Decimal |
D
|
@
|
0.66666666D
0.66666666@
|
|
文字・文字列型 | System.Char | char | - |
'A'
|
Char |
C
|
- |
"A"C
|
System.String | string | - |
"ABC"
|
String | - | - |
"ABC"
|
|
型 | 型 | サフィックス | リテラルの例 | 型 | サフィックス | 型文字 | リテラルの例 | |
.NET | C# | VB |
数値リテラルでは、数字とサフィックスの間に桁区切り文字を入れることはできません。
サフィックスを使って整数リテラルの型を指定する
Option Infer On
Imports System
Class Sample
Shared Sub Main()
Dim l = 100L ' Long型の整数リテラル
Dim ui = 100UI ' UInteger型の整数リテラル
Dim ul = 100UL ' ULong型の整数リテラル
Dim i = 100 ' 型を明示しない実数リテラル (Integer型となる)
Dim n = 9223372036854775808UL ' ULong型以外ではオーバーフローとなるのでサフィックスで型を明示する必要がある
Console.WriteLine($"{l} ({l.GetType()})")
Console.WriteLine($"{ui} ({ui.GetType()})")
Console.WriteLine($"{ul} ({ul.GetType()})")
Console.WriteLine($"{i} ({i.GetType()})")
Console.WriteLine($"{n} ({n.GetType()})")
End Sub
End Class
実行結果
100 (System.Int64) 100 (System.UInt32) 100 (System.UInt64) 100 (System.Int32) 9223372036854775808 (System.UInt64)
16進数表記・8進数表記などのプレフィックス付きの整数リテラルを記述する場合でも、サフィックスを付けることで型を指定することができます。