When I compile my C# project in MonoDevelop, I get the following error:
Type of conditional expression cannot be determined as 'byte' and 'int' convert implicitly to each other
Code Snippet:
byte oldType = type;
type = bindings[type];
//Ignores upda开发者_运维技巧ting 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;
}
This is the line that is highlighted in the error:
if (b == (byte)((painting || action == 1) ? type : 0))
Help is greatly appreciated!
The conditional operator is an expression and thus needs a return type, and both paths have to have the same return type.
(painting || action == 1) ? type : (byte)0
There is no implicit conversion between byte
and int
, so you need to specify one in the results of the ternary operator:
? type : (byte)0
Both return types on this operator need to either be the same or have an implicit conversion defined in order to work.
From MSDN ?: Operator
:
Either the type of first_expression and second_expression must be the same, or an implicit conversion must exist from one type to the other.
精彩评论