Como usar o operador ternário para esta declaração em C#
-
16-09-2019 - |
Pergunta
int five = 5;
- Quando a variável cinco for igual a 5, escreva verdadeira
- Quando a variável cinco não for igual a 5, escreva falsa
Como escrevo uma declaração para isso no ASP.net usando C#?
Solução
int five = 5;
string answer = five == 5 ? "true" : "false";
Vejo que você quer usar isso para escrever os valores em asp.net, o answer
String manterá o valor desejado, use isso como quiser.
Outras dicas
O operador ternário em quase todos os idiomas funciona como uma instrução IF IF:
Console.WriteLine((five == 5) ? 'true' : 'false');
(Você não deve precisar estritamente das parens internas, mas eu gosto de incluí -las para clareza.)
Se o booleano avaliar como verdadeiro, toda a expressão é igual ao valor entre o ?
e :
. Se o booleano avaliar como falso, a expressão é igual ao valor após o :
.
Não acredito que você possa incluir linhas de código no meio do operador. Essas são simplesmente expressões que substituem toda a "frase" do operador assim que a condição for avaliada.
Eu sou um cara Java e realmente não conheço C#; Talvez seja diferente. Mas provavelmente não.
Você pode mantê -lo realmente simples. Comparando de cinco a 5 resultados em um booleano, então também é possível:
int five = 5;
Console.WriteLine((five == 5).ToString());
o bool Tipo Para sequenciar() O método já foi projetado para retornar "verdadeiro" ou "falso", e se a alternativa minúscula for necessária, isso também é simples:
int five = 5;
Console.WriteLine((five == 5).ToString().ToLower());
Se você não precisar mais baixo, também pode eliminar completamente a toque:
int five = 5;
Console.WriteLine(five == 5);
Em Asp.net, declarativo (ou seja, para onde o HTML vai):
<p>Is this five? <%= yourVariable == 5 ? "true" : "false"; %></p>
Ou, alternativamente, no código atrás (ou seja, onde estão seu código e classes C#):
someTextBox.Text = yourVariable == 5 ? "true" : "false";
Response.Write(five == 5 ? "True" : "False");
No entanto, para este exemplo, eu não usaria o operador ternário:
Response.Write(five == 5);
Só para estar seguro, você deve colocar suas expressões ternárias em Parens (), porque o operador ternário ?: tem sutil precedência que pode morder você se você não estiver assistindo.
string answer = ( (five==5) ? ("true") : ("false") );
Provavelmente não é importante com este exemplo, mas se o ternário fizer parte de uma expressão complexa, as regras de precedência podem fazer com que o compilador interprete a expressão de maneira diferente do que você pretendia.
five==5?console.writeline('true'):console.writeline('false')
Funciona assim:
<if-expression> ? <code-when-if-expression-evaluates-true> : <code-when-if-expression-evaluates-false>
EDITAR:
O que eu provavelmente tinha sido thkinking:
<%=five==5?'true':'false'%>
Mais uma variação:
string message = XmlConvert.ToString(5 == five);
Console.Write(message);
Coisa mais simples é console.writeLine ((cinco == 5) .ToString ());
Do comentário de @johnk use:
int five = 5;
string answer = five == 5 ? bool.TrueString : bool.FalseString;
Representa o valor booleano TRUE/FALSE como uma string. Este campo é só de leitura.https://msdn.microsoft.com/en-us/library/system.boolean.truestring(v=vs.110).aspx
Usando a instrução do operador ternário em c# com aval. (Na página ASPX)
<span><%# Eval("productname").ToString().Length<=0 ? "<label style=\"color: red;\">Notes<span></span></label>" : "<label style=\"color: blue;\">Notes<span></span></label>"%></span>