?: Operador (translation from VPE for Csharp Reference)
O operador condicional (?:) retorna um dos dois valores, dependendo do valor de uma expressão booliana. O operador condicional é do formulário
condition ? first_expression : second_expression;
Comentários
Se a condição é truea primeira expressão é avaliada e torna-se o resultado; se false, a segunda expressão será avaliada e torna-se o resultado. Apenas uma das duas expressões é avaliada cada vez.
Cálculos que podem exigir que uma construção if-else caso contrário, podem ser expresso com elegância e forma mais concisa com o operador condicional.Por exemplo, para evitar uma divisão por zero no cálculo do sin Você poderia escrever uma função
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
ou, usando o operador condicional,
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
O operador condicional é associativo à direita, portanto, uma expressão do formulário
a ? b : c ? d : e
é avaliado sistema autônomo
a ? b : (c ? d : e)
não
(a ? b : c) ? d : e
O operador condicional não pode ser sobrecarregado.
Exemplo
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
*/