Comment utiliser l'opérateur ternaire de cette instruction en c#
int five = 5;
- lorsque la variable cinq est égal à 5, écrire vrai
- lorsque la variable cinq n'est pas égal à 5, écrire de fausses
Comment puis-je écrire une déclaration à cet effet dans ASP.NET à l'aide de C#?
bonne édition de Jeff atwood merci pour modifier ma question par vos mains
OriginalL'auteur | 2009-11-05
Vous devez vous connecter pour publier un commentaire.
Je vois que vous souhaitez utiliser cette fonction pour écrire les valeurs dans ASP.NET le
answer
chaîne de tenir la valeur désirée, utilisez-la comme vous s'il vous plaît.OriginalL'auteur roman m
L'opérateur ternaire dans à peu près tous les ouvrages en langues en ligne si la déclaration:
(Vous ne devriez pas strictement nécessaire à l'intérieur des parenthèses, mais j'aime inclure pour plus de clarté.)
Si le booléen true, alors l'expression entière est égale à la valeur entre les
?
et:
. Si le booléen false, l'expression est égale à la valeur après la:
.Je ne crois pas que vous pouvez inclure des lignes de code dans le milieu de l'opérateur. Ceux-ci sont simplement censé être des expressions que remplacer la totalité de l'opérateur "phrase" une fois que la condition est évaluée.
Je suis un Java gars et ne sais pas vraiment C#; c'est peut-être différent. Mais probablement pas.
d'accord, mais une autre remarque: j'aime bien ton explication, bien fait! 🙂
Heh, oups. Désolé, c'était la copie de l'autre répondeur du code et de rappeler que depuis le tout petit peu de C# je me suis souvenu. 🙂
mais j'ai oublié de dire merci alors très très merci pour m'aider sur la pile
OriginalL'auteur James Cronen
Vous pourriez le garder très simple. Comparaison des cinq à 5 résultats dans un booléen, donc la suite est également possible:
La bool type de ToString() méthode est déjà conçu pour renvoyer "True" ou "False", et si les minuscules alternative est nécessaire, c'est simple:
Si vous n'en avez pas besoin lowercase, vous pouvez éliminer complètement le ToString ainsi:
OriginalL'auteur jrista
Dans ASP.NET déclarative (j'.e, où le HTML va):
Ou, sinon, dans le code derrière (c'est à dire, où votre code C# et les classes):
OriginalL'auteur Abel
Bien que, pour cet exemple, je ne voudrais pas utiliser l'opérateur ternaire:
OriginalL'auteur devuxer
Juste pour être sûr, vous devez mettre votre ternaire expressions dans les parenthèses (), parce que l'opérateur ternaire ?: a subtils de priorité qui peut vous mordre si vous n'êtes pas regardant.
Ce n'est probablement pas important avec cet exemple, mais si le ternaire est une partie d'une expression complexe, les règles de priorité qui pourraient faire du compilateur interpréter l'expression différente de ce que vous avez prévu.
Les parens forcer le compilateur à interpréter l'expression comme prévu, substitution de l'intégré dans les règles de priorité, qui ne sont pas aussi intuitive que vous le comprendre. C'est un exemple simple, mais comme l'expression devient de plus en plus complexe, il n'y a plus de possibilité pour la langue de mal interpréter vos intentions.
Aussi, les parenthèses ne sont "libres", au moins dans les langages compilés. Ils peuvent aider le lecteur à déchiffrer l'expression, surtout si vous utilisez un espacement de code de style.
OriginalL'auteur dar7yl
five==5?console.writeline('true'):console.writeline('false')
Il fonctionne comme ceci:
EDIT:
Ce que j'avais probablement été thkinking:
<%=five==5?'true':'false'%>
Console.WriteLine
renvoie void. L'opérateur ternaire nécessite une valeur de retour et doit être utilisé en tant que HR expression d'une cession.Ah, oups! Je n'ai pas de compilateur en face de moi pour tester. Oh bien.
êtes-vous vraiment lu ma question, je dis pour asp.net pas pour winform et de votre relevé de ne pas avoir travaillé si vous le faites dans asp.net vous obtenez une erreur "Erreur de compilation Message: CS0201: Seule la cession, l'appel, incrémentation, décrémentation, et de nouvelles expressions d'objet peut être utilisé comme une déclaration"
Cette erreur n'est pas lié à la WinForms ou ASP.NET. L'erreur signifie que je l'ai expliqué dans le premier commentaire ici: l'opérateur ternaire doit être sur le côté droit d'une affectation. Oh, et C# besoins des guillemets 🙂
OriginalL'auteur FrustratedWithFormsDesigner
Encore une autre variante:
OriginalL'auteur Neil
Chose la plus simple est
Console.WriteLine((cinq == 5).ToString());
OriginalL'auteur Mahesh
De @JohnK du commentaire:
Représente la valeur Booléenne true/false comme une chaîne de caractères. Ce champ est en lecture seule.
https://msdn.microsoft.com/en-us/library/system.boolean.truestring(v=vs. 110).aspx
OriginalL'auteur user5377037
utilisant l'opérateur ternaire déclaration en c# avec Eval. (Dans la page aspx)
OriginalL'auteur RPS