我正在寻找C#和VB.Net的列表数字类型初始化标识符。
例如:
Dim x = 1D 'Decimal'
Dim y = 1.0 'initializes to float'
以下是清单:
标识符不区分大小写
VB.Net
Int32 = 1, I Double = 1.0, R, 1.0e5 Decimal = D Single = F, ! Int16 = S UInt64 = L, UL
C#
答案 0 :(得分:10)
Section 1.8 of the C# specification包含这些值。
integer-type-suffix:U u L l UL之一 Ul uL ul LU Lu lU lu
real-type-suffix:F f D d M m之一
Section 2.4.4.2详细说明了整数类型:
整数文字的类型是 确定如下:
- 如果文字没有后缀,则其中包含第一种类型 它的值可以表示为:int, uint,long,ulong。
- 如果文字后缀为U或u,则其中包含第一种类型 它的价值可以代表: uint,ulong。
- 如果文字后缀为L或l,则其中包含第一个类型 它的价值可以代表: long,ulong。
- 如果文字后缀为UL,U1,uL,ul,LU,Lu,lU或lu,则为 ulong类型。
Section 2.4.4.3详细阐述了Real类型:
如果未指定实际类型后缀, 真实文字的类型是 双。否则,真正的类型 后缀决定了真实的类型 字面意思如下:
- 以F或f为后缀的实数是float类型。例如, 文字1f,1.5f,1e10f和123.456F 都是float类型。
- 以D或d为后缀的实数是double类型。例如, 文字1d,1.5d,1e10d和123.456D 都是双重类型。
- 以M或m为后缀的实数是十进制类型。例如, 文字1m,1.5m,1e10m和123.456M 都是十进制的类型。这个文字 被转换为十进制值 取确切的值,如果 必要的,四舍五入到最近的 使用银行家的可表示价值 四舍五入(第4.1.7节)。任何规模 文字中显而易见的是保留下来的 除非值是四舍五入或 值为零(后一种情况 符号和比例将为0)。因此, 文字2.900m将被解析为 用符号0表示小数, 系数2900,以及比例3.
同样,VB规范包含Integer和Floating point文字的详细信息。
对于整数:
ShortCharacter :: = S
IntegerCharacter :: = I
LongCharacter :: = L
对于浮点数:
SingleCharacter :: = F
DoubleCharacter :: = R
DecimalCharacter :: = D
答案 1 :(得分:3)
就个人而言,我并不总是使用标识符,因为这里提出的原因(内存)。 C#编译器的一个有趣特性是它实际上将以下内容编译为同一个东西:
static void Foo()
{
var x = 100F;
Console.WriteLine(x);
}
static void Bar()
{
var x = (float)100; // compiled as "ldc.r4 100" - **not** a cast
Console.WriteLine(x);
}
我发现第二个版本更具可读性。所以我使用那种方法。唯一一次AFAIK它做了什么不同的是十进制跟尾零 - 即
static void Foo()
{
var x = 100.00M;
Console.WriteLine(x);
}
static void Bar()
{
var x = (decimal)100.00; // compiled as 100M - extended .00 precision lost
Console.WriteLine(x);
}
答案 2 :(得分:0)
在VB中你应该有
Option Strict On
Dim x as Decimal = 1D 'Decimal'
Dim y as Double = 1.0 'initializes to double'
Dim z as Integer = 1 'integer