默认情况下,文字0的数据类型是int?

时间:2017-08-07 10:40:22

标签: c#

默认情况下,数据类型为0是int?

错误: 无法将类型'int'隐式转换为'short'。

public short CardType { get; set; }
CardType = 0;

即使这个判例也没问题。

short CardType = 0;

注意:这不是铸造的问题。我想理解为什么0默认不能短?

感谢您提供有用的理解。

4 个答案:

答案 0 :(得分:4)

是的,默认情况下,数字文字是int,除非您另行指定,例如,可以使用M声明小数

var myDecimal = 0M;
浮动的{p> FL。但是short只有一个你需要依靠演员:

public short CardType { get; set; }
CardType = (short)0;

在你的编辑中:

  

这不是铸造的问题。我想理解为什么0默认不能短?

它不相关 - 默认情况下整数必须是某些数据类型,在这种情况下,根据Language specification

,它们默认为int
  

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

     
      
  • 如果文字没有后缀,则其中第一个类型可以表示其值:intuintlongulong。< / LI>   
  • 如果文字后缀为Uu,则其中的第一种类型可以表示其值:uintulong
  •   
  • 如果文字后缀为Ll,则其中的第一种类型可以表示其值:longulong
  •   
  • 如果文字的后缀为ULUluLulLULulUlu,类型为ulong
  •   

答案 1 :(得分:2)

你需要这样做:

public short CardType { get; set; }
CardType = (short)0;

答案 2 :(得分:1)

实际上,0的类型在所有C类语言中都是int; C#包括在内。

short字面值没有表示法。

因此,在编译器无法或不允许消除歧义的情况下,您需要使用强制转换:

CardType = (short)0;

答案 3 :(得分:0)

你需要的是打字

CardType = (short)0;

您可能希望看到this