Pergunta

Considerando o tempo de avaliação, estão seguindo dois equivalentes?

if(condition1)
{
    //code1
}
else
{
    //code2
}

condition1 ? code1 : code2

Ou eles são apenas sintaticamente diferente?

Foi útil?

Solução

A diferença é que a última estação pode ser utilizado para devolver um valor com base numa condição.

Por exemplo, se você tem um seguinte declaração:

if (SomeCondition())
{
    text = "Yes";
}
else
{
    text = "No";
}

Usando um operador ternário, você vai escrever:

text = SomeCondition() ? "Yes" : "No";

Observe como o primeiro exemplo executa uma instrução com base em uma condição, enquanto o segundo retorna um valor com base em uma condição.

Outras dicas

Bem ... No primeiro caso, você pode ter qualquer quantidade ou tipo (expressão vs declaração) de código no lugar de code1 e code2. Neste último caso, devem ser expressões válidas.

Sim & Sim.

Apenas lucro é para salvar linhas de código.

Sim, estes são duas formas sintáticas diferentes e funcionam de forma idêntica e mais likey código idêntico será emitido pelo compilador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top