我有以下代码:
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/