.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