当我在MonoDevelop中编译我的C#项目时,我收到以下错误:
Type of conditional expression cannot be determined as 'byte' and 'int' convert implicitly to each other
代码段:
byte oldType = type;
type = bindings[type];
//Ignores updating blocks that are the same and send block only to the player
if (b == (byte)((painting || action == 1) ? type : 0))
{
if (painting || oldType != type) { SendBlockchange(x, y, z, b); } return;
}
这是错误中突出显示的行:
if (b == (byte)((painting || action == 1) ? type : 0))
非常感谢帮助!
答案 0 :(得分:27)
条件运算符是一个表达式,因此需要返回类型,并且两个路径都必须具有相同的返回类型。
(painting || action == 1) ? type : (byte)0
答案 1 :(得分:5)
byte
和int
之间没有隐式转换,因此您需要在三元运算符的结果中指定一个:
? type : (byte)0
此运算符上的两种返回类型都需要相同或者定义了隐式转换才能工作。
来自MSDN ?: Operator
:
first_expression和second_expression的类型必须相同,或者从一种类型到另一种类型必须存在隐式转换。