C#短/长/整型文字格式?
在C / C#/等你可以告诉编译器,一个文字数字是不是看起来是(即, float
而不是double
, unsigned long
而不是int
:
var d = 1.0; // double var f = 1.0f; // float var u = 1UL; // unsigned long
等等
有人可以指出我的名单吗? 我正在寻找一个short
的后缀或Int16
。
var d = 1.0d; // double var f = 1.0f; // float var m = 1.0m; // decimal var i = 1; // int var ui = 1U; // uint var ul = 1UL; // ulong var l = 1L; // long
我认为这就是…短/ ushort / byte / sbyte没有字面说明符
来自§2.4.4.2整数文字 :
整数文字的types如下确定:
- 如果文字没有后缀,那么它的第一个types的值可以表示为:
int
,uint
,long
,ulong
。- 如果该字面量以
U
或u
作为后缀,则具有可以表示其值的第一个types:uint
,ulong
。- 如果文字后缀为
L
或l
,则它具有可以表示其值的第一个types:long
,ulong
。- 如果文字后缀为
UL
,UL
,UL
,ul
,LU
,LU
,lU
或LU
,则为ulong
types。
而从§2.4.4.3真正的文字 :
如果没有指定真正的types后缀,那么真正的文字types是双重的。 否则,实际types后缀将决定实际文字的types,如下所示:
- 以
F
或f
为后缀的真正文字是float
types。 例如,文字1f
,1.5f
,1e10f
和123.456F
都是float
types。- 以
D
或d
为后缀的真正文字是double
types的。 例如,文字1d
,1.5d
,1e10d
和123.456D
都是double
types的。- 以
M
或m
为后缀的真正文字是decimal
的types。 例如,文字1m
,1.5m
,1e10m
和123.456M
都是decimal
。 这个字面值通过确切的值被转换成十进制值,如果需要的话,用银行家的四舍五入将其舍入到最接近的可表示值(4.1.7节)。 除非值被舍入或者值为零(在后一种情况下,符号和比例将为0),否则在文字中明显的任何比例被保留。 因此,文字2.900m
将被parsing为符号0
,系数2900
和尺度3
的小数。
如果你的variables不是一个简短的,你必须明确地转换它:
Object s = (Int16) 1;
没有一个简短的。 只用short s = 1;
。
如果你想避免经常使用short.Parse("1")
产生警告的types转换, short.Parse("1")
也可能是一个select。