默认情况下,数据类型为0是int?
错误: 无法将类型'int'隐式转换为'short'。
public short CardType { get; set; }
CardType = 0;
即使这个判例也没问题。
short CardType = 0;
注意:这不是铸造的问题。我想理解为什么0默认不能短?
感谢您提供有用的理解。
答案 0 :(得分:4)
是的,默认情况下,数字文字是int
,除非您另行指定,例如,可以使用M
声明小数
var myDecimal = 0M;
浮动的{p> F
,L
。但是short
只有一个你需要依靠演员:
public short CardType { get; set; }
CardType = (short)0;
在你的编辑中:
这不是铸造的问题。我想理解为什么0默认不能短?
它不相关 - 默认情况下整数必须是某些数据类型,在这种情况下,根据Language specification
,它们默认为int
整数文字的类型确定如下:
- 如果文字没有后缀,则其中第一个类型可以表示其值:
int
,uint
,long
,ulong
。< / LI>- 如果文字后缀为
U
或u
,则其中的第一种类型可以表示其值:uint
,ulong
。- 如果文字后缀为
L
或l
,则其中的第一种类型可以表示其值:long
,ulong
。- 如果文字的后缀为
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
或lu
,类型为ulong
。
答案 1 :(得分:2)
你需要这样做:
public short CardType { get; set; }
CardType = (short)0;
答案 2 :(得分:1)
实际上,0
的类型在所有C类语言中都是int
; C#包括在内。
short
字面值没有表示法。
因此,在编译器无法或不允许消除歧义的情况下,您需要使用强制转换:
CardType = (short)0;
答案 3 :(得分:0)