数値および文字列のリテラルにサフィックスを付けることで、リテラルの型を明示的に指定することができます。 また、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 |
数値リテラルでは、数字とサフィックスの間に桁区切り文字を入れることはできません。
16進数表記・8進数表記などのプレフィックス付きの整数リテラルを記述する場合でも、サフィックスを付けることで型を指定することができます。
サフィックスを使ってプレフィックス付き整数リテラルの型を指定する
using System;
class Sample {
static void Main()
{
// 10進数リテラルとサフィックス
Console.WriteLine("{0} {1}", 100, (100).GetType());
Console.WriteLine("{0} {1}", 100u, (100u).GetType());
Console.WriteLine("{0} {1}", 100L, (100L).GetType());
Console.WriteLine();
// 16進数リテラルとサフィックス
Console.WriteLine("{0} {1}", 0x100, (0x100).GetType());
Console.WriteLine("{0} {1}", 0x100u, (0x100u).GetType());
Console.WriteLine("{0} {1}", 0x100L, (0x100L).GetType());
Console.WriteLine();
// 2進数リテラルとサフィックス
Console.WriteLine("{0} {1}", 0b100, (0b100).GetType());
Console.WriteLine("{0} {1}", 0b100u, (0b100u).GetType());
Console.WriteLine("{0} {1}", 0b100L, (0b100L).GetType());
Console.WriteLine();
}
}
実行結果
100 System.Int32 100 System.UInt32 100 System.Int64 256 System.Int32 256 System.UInt32 256 System.Int64 4 System.Int32 4 System.UInt32 4 System.Int64