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
*/

Vea también

Conceptos

Guía de programación de C#

Referencia

Operadores de C#

if-else (Referencia de C#)

Otros recursos

Referencia de C#