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.