Aprendizagem por exemplo - Terminologia (? ,:, etc)
-
22-09-2019 - |
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?
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");