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 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; }
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With