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

时间:2009-03-26 14:11:31

标签: c# .net vb.net

我正在寻找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#

3 个答案:

答案 0 :(得分:10)

C#

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

同样,VB规范包含IntegerFloating 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