我有以下代码:

Int16 myShortInt;
myShortInt = Condition ? 1 :2;

此代码导致编译器错误:



如果我以扩展格式编写条件,则不会出现编译器错误:
if(Condition)
{
   myShortInt = 1;
}
else
{
   myShortInt   = 2;
}

为什么会出现编译器错误?

最佳答案

当代码被编译时,它看起来像这样:

为了:

Int16 myShortInt;
 myShortInt = Condition ? 1 :2;

看起来有点像
Int16 myShortInt;
var value =  Condition ? 1 :2; //notice that this is interperted as an integer.
myShortInt = value ;

而对于:
if(Condition)
{
 myShortInt = 1;
}
else
{
 myShortInt   = 2;
}

介于两者之间没有阶段将值整数为int,而文字被视为Int16。

关于c# - 如果if块,则将其强制转换为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18124598/

10-09 08:39