我正在使用MS Visual Studio Enterprise 2015,我找到了一个奇怪的问题。现在,我不是要求如何解决出现的错误,但我想知道为什么 C#以这种方式表现。
此代码段来自C#Interactive,但它在编辑器中的行为也相同:
short num;
num = 0
//num = 0
num = 4
//num = 4
num = true ? 1 : 2
//num = 1
num = false ? 1 : 2
//num = 2
bool flag = true;
num = flag ? 1 : 2
最后一行会导致错误:
(1,7):错误CS0266:无法将类型'int'隐式转换为'short'。一个 存在显式转换(您是否错过了演员?)
基本上,将数字分配给短数字(例如0或4)没有问题,并且在你给它一个可变条件之前,字面上解释三元是没有问题的。这是什么交易?