10

可能重复:
C#short/long/int 文字格式?

阅读在编程中的使用var,我很好奇 var 在用于int类型时的默认值。例如,如果我使用

var foo = 65535

类型是ushort还是只是int?谢谢。

4

2 回答 2

28

真的,您要问的是C# 中整数文字的类型是什么?,可以在规范中找到答案:

(4.0 规范的第 2.4.4.2 节)

整数文字的类型确定如下:

  • 如果字面量没有后缀,则它具有可以表示其值的第一种类型:int、uint、long、ulong。
  • 如果文字以 U 或 u 为后缀,则它具有可以表示其值的第一种类型:uint、ulong。
  • 如果文字以 L 或 l 为后缀,则它具有可以表示其值的第一种类型:long、ulong。
  • 如果文字以 UL、Ul、uL、ul、LU、Lu、lU 或 lu 为后缀,则为 ulong 类型。

如果整数文字表示的值超出 ulong 类型的范围,则会发生编译时错误。

于 2012-10-19T14:25:09.810 回答
6

所有整数文字都是 type ,因此除非您在末尾强制转换或添加显式类型限定符,否则您int的变量将是:int

var quick = 65535;         // int
var brown = (ushort)65535; // ushort
var fox = 65535L;          // long
于 2012-10-19T14:17:07.700 回答