数値および文字列のリテラルにサフィックスを付けることで、リテラルの型を明示的に指定することができます。 また、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()
{
var f = 3.14f; // float型の実数リテラル
var d = 3.14d; // double型の実数リテラル
var m = 3.14m; // decimal型の実数リテラル
var n = 3.14; // 型を明示しない実数リテラル(double型となる)
Console.WriteLine($"{f} ({f.GetType()})");
Console.WriteLine($"{d} ({d.GetType()})");
Console.WriteLine($"{m} ({m.GetType()})");
Console.WriteLine($"{n} ({n.GetType()})");
}
}
実行結果
3.14 (System.Single) 3.14 (System.Double) 3.14 (System.Decimal) 3.14 (System.Double)