Pergunta

Quando você era criança, você já perguntou a seus pais como soletrar algo e eles disseram para você procurar? Minha primeira impressão foi sempre: "Bem, se pudesse procurar, eu não precisaria de ajuda para soletrar". (sim, sim, eu conheço a fonética)

... Enfim, eu estava apenas olhando para algum código e encontrei um exemplo como:

 txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;

Eu posso descobrir o que essa operação faz, mas obviamente não posso pesquisar no Google? Ou: e não consigo encontrá -los ao procurar "operadores C#", LINQ, Lambda Expressions etc., então tenho que fazer essa pergunta boba para que eu possa começar a ler sobre isso.

O que são esses operadores?

Foi útil?

Solução

?: é o operador condicional, e a melhor maneira de descobrir é perguntar aqui!

condition ? first_expression : second_expression;

Se a condição for verdadeira, a primeira expressão é avaliada e se tornará o resultado; Se falso, a segunda expressão é avaliada e se torna o resultado. Apenas uma das duas expressões é avaliada.

É extremamente útil para a legibilidade das tarefas, quando toda a expressão é relativamente curta:

string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname

É muito mais fácil e rápido do que:

string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
    name = user.Nickname;
}

Outras dicas

? é um embutido-if declaração. Isso significa que se checkbox.Checked é true, então CharacterCasing.Upper será o valor da expressão, caso contrário CharacterCasing.Normal vai ser.

Funciona assim:

type value = condition ? trueValue : falseValue;

Essa é uma instrução inline se. "?" é o código para o if, ":" é o para o else.

O ? também é conhecido como o operador ternário

Aliás, acontece que você pode procurar por "?:" na Wikipedia e encontre isso.

Observe que às vezes também é chamado de operador ternário ", já que é o único operador ternário (3-argumento) em idiomas do tipo C.

Por falar nisso. Enquanto você está aprendendo C# confira ? operador Às vezes é alternativa muito melhor para ?:.

Considerar:

Console.WriteLine(user.LastName ?? "no last name provided");

vs:

Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top