Stai cercando il conditional operator o ternario operatore ?:
:
La sua forma è
condition ? value_if_true : value_if_false
Per esempio:
Console.Write((!Example) ? "Example is false" : "Example is true");
O la mia preferenza personale,
Console.Write(Example ? "Example is true" : "Example is false");
in modo che non ho mai dovuto pensare a cosa succede quando "non Example
è falso".
Si noti che non si può mettere codice arbitrario per value_if_true
e value_if_false
- deve essere un espressione, non è una dichiarazione. Quindi quanto sopra è valido perché
(!Example) ? "Example is false" : "Example is true"
è un string
, è possibile scrivere:
string message = (!Example) ? "Example is false" : "Example is true";
Console.Write(message);
Tuttavia, non si può fare
(!Example) ? Console.Write("Example is false") : Console.Write("Example is true")
per esempio, a causa Console.Write(..)
non restituisce un valore , oppure
(!Example) ? { a = 1; "Example is false" } : "Example is true"
perché { a = 1; "Example is false" }
non è un'espressione.
Se sei un fan del codice contorto, sarai felice di sapere che puoi annidare infinite espressioni ternarie. 'var x = thisIsTrue? 1: thatIsTrue? 2: 3' ecc. –