usa tipos ternario que poner para operator operadores operador entonces datos comparaciones como c# mono monodevelop

tipos - para que se usa el en c#



El tipo de expresión condicional no se puede determinar como (2)

Cuando compilo mi proyecto de C # en MonoDevelop, obtengo el siguiente error:

Type of conditional expression cannot be determined as ''byte'' and ''int'' convert implicitly to each other

Fragmento de código:

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; }

Esta es la línea que está resaltada en el error:

if (b == (byte)((painting || action == 1) ? type : 0))

La ayuda es muy apreciada!


El operador condicional es una expresión y, por lo tanto, necesita un tipo de retorno, y ambas rutas deben tener el mismo tipo de retorno.

(painting || action == 1) ? type : (byte)0


No hay una conversión implícita entre byte e int , por lo que debe especificar uno en los resultados del operador ternario:

? type : (byte)0

Ambos tipos de devolución en este operador deben ser iguales o tener una conversión implícita definida para que funcione.

Desde MSDN ?: Operator :

O el tipo de primera_expresión y segunda_expresión debe ser el mismo, o debe existir una conversión implícita de un tipo a otro.