C#短/长/整型文字格式?

在C / C#/等你可以告诉编译器,一个文字数字是不是看起来是(即, float而不是doubleunsigned 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的值可以表示为: intuintlongulong
  • 如果该字面量以Uu作为后缀,则具有可以表示其值的第一个types: uintulong
  • 如果文字后缀为Ll ,则它具有可以表示其值的第一个types: longulong
  • 如果文字后缀为ULULULulLULUlULU ,则为ulongtypes。

而从§2.4.4.3真正的文字 :

如果没有指定真正的types后缀,那么真正的文字types是双重的。 否则,实际types后缀将决定实际文字的types,如下所示:

  • Ff为后缀的真正文字是floattypes。 例如,文字1f1.5f1e10f123.456F都是floattypes。
  • Dd为后缀的真正文字是doubletypes的。 例如,文字1d1.5d1e10d123.456D都是doubletypes的。
  • Mm为后缀的真正文字是decimal的types。 例如,文字1m1.5m1e10m123.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。