2016-05-23 10 views
5

C'è un modo per aggiungere un'istruzione if in un parametro di funzione? Ad esempio:Posso aggiungere un'istruzione if a un parametro?

static void Main() 
{ 
    bool Example = false; 
    Console.Write((if(!Example){"Example is false"}else{"Example is true"})); 
} 
//Desired outcome of when the code shown above is 
//executed would be for the console to output: 
//Example is false 

risposta

6

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.

5

Si potrebbe cercare il ternary expression.

if (thisIsTrue) 
    Console.WriteLine("this") 
else 
    Console.WriteLine("that") 

è equivalente a:

Console.WriteLine(thisIsTrue ? "this" : "that") 
+0

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. –

1
Console.Write(Example?"Example is true":"Example is false"); 

o anche

Console.Write("Example is " + (Example?"True":"False")); 
1

Pardon il codice d'aria, sto utilizzando una tavoletta.

Si può fare quello che vuoi con l'operatore ternario (https://msdn.microsoft.com/en-us/library/ty67wk28.aspx), come segue ...

Console.Write(!Example?"Example is false":"Example is true"); 

Fondamentalmente, questo agisce come un inline "if". Se la parte che precede il punto interrogativo è vera, ottieni il bit tra il punto interrogativo e il colon. Se falso, ottieni il bit dopo i due punti.

Se ciò non ha senso, postback e proverò a fornire un esempio più chiaro quando sono su un computer reale.

Problemi correlati