Operador ?: (Referencia de C#)
Actualización: noviembre 2007
El operador condicional (?:) devuelve uno de dos valores según el valor de una expresión booleana. El operador condicional tiene el formato
condition ? first_expression : second_expression;
Comentarios
Si la condición es true, se evalúa la primera expresión y se convierte en el resultado; si es false, se evalúa la segunda expresión y se convierte en el resultado. Sólo se evalúa una de las dos expresiones.
Los cálculos que, en cualquier otro caso, podrían requerir un bloque de decisión if-else se pueden expresar más concisa y elegantemente mediante el operador condicional. Por ejemplo, para evitar una división por cero en el cálculo de la función sin, podría escribirse
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
o bien, con el operador condicional,
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
El operador condicional es asociativo por la derecha, de modo que una expresión de la forma:
a ? b : c ? d : e
se evalúa como
a ? b : (c ? d : e)
y no como
(a ? b : c) ? d : e
El operador condicional no se puede sobrecargar.
Ejemplo
class ConditionalOp
{
static double sinc(double x)
{
return x != 0.0 ? Math.Sin(x) / x : 1.0;
}
static void Main()
{
Console.WriteLine(sinc(0.2));
Console.WriteLine(sinc(0.1));
Console.WriteLine(sinc(0.0));
}
}
/*
Output:
0.993346653975306
0.998334166468282
1
*/