.Net数字类型初始化标识符列表

我正在寻找C#和VB.Net的列表数字类型初始化标识符。

例如:

Dim x = 1D 'Decimal' Dim y = 1.0 'initializes to float' 

这是列表:

标识符不区分大小写

VB.Net

 Int32 = 1,我
 Double = 1.0,R,1.0e5
十进制= D.
单= F ,!
 Int16 = S.
 UInt64 = L,UL

C#

C#

C#规范的第1.8节包含这些值。

整数型后缀:U u L l UL Ul uL ul LU Lu lU lu之一

real-type-suffix:F f D d M m之一

第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。

第2.4.4.3节对Real类型进行了详细说明:

如果未指定实际类型后缀,则实数的类型为double。 否则,实际类型后缀确定实际文字的类型,如下所示:

  • 以F或f为后缀的实数是float类型。 例如,文字1f,1.5f,1e10f和123.456F都是float类型。
  • 以D或d为后缀的实数是double类型。 例如,文字1d,1.5d,1e10d和123.456D都是double类型。
  • 以M或m为后缀的实数是十进制类型。 例如,文字1m,1.5m,1e10m和123.456M都是十进制类型。 通过获取精确值将此文字转换为十进制值,并在必要时使用银行家的舍入舍入到最接近的可表示值(第4.1.7节)。 除非值被舍入或值为零,否则将保留文字中明显的任何比例(在后一种情况下,符号和比例将为0)。 因此,将解析文字2.900m以形成带符号0,系数2900和比例3的小数。

VB

类似地,VB规范包含Integer和Floating point文字的详细信息。

对于整数:

ShortCharacter :: = S.
IntegerCharacter :: = I.
LongCharacter :: = L.

对于浮点数:

SingleCharacter :: = F.
DoubleCharacter :: = R.
DecimalCharacter :: = D.

就个人而言,我并不总是使用标识符,因为这里提出的原因(内存)。 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); } 

在VB中你应该有

选项严格打开

 Dim x as Decimal = 1D 'Decimal' Dim y as Double = 1.0 'initializes to double' Dim z as Integer = 1 'integer