2016-05-23 6 views
5

Gibt es eine Möglichkeit, eine if-Anweisung in einen Funktionsparameter einzufügen? Zum Beispiel:Kann ich einem Parameter eine if-Anweisung hinzufügen?

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 

Antwort

6

Sie suchen die conditional operator oder ternären Betreiber ?::

Seine Form ist

condition ? value_if_true : value_if_false 

Zum Beispiel:

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

Oder meine persönliche Präferenz,

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

, so dass ich nie passiert, zu denken, was, wenn "nicht Example falsch ist".

Beachten Sie, dass Sie nicht von beliebigem Code für value_if_true und value_if_false setzen können - es hat ein Ausdruck, keine Aussage sein. So ist die oben ist gültig, weil

(!Example) ? "Example is false" : "Example is true" 

ein string ist, können Sie schreiben:

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

jedoch nicht

tun können
(!Example) ? Console.Write("Example is false") : Console.Write("Example is true") 

zum Beispiel, weil Console.Write(..) keinen Wert zurückgeben oder

(!Example) ? { a = 1; "Example is false" } : "Example is true" 

weil { a = 1; "Example is false" } kein Ausdruck ist.

5

Sie könnten nach dem ternary expression suchen. Ist

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

entspricht:

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

Wenn Sie ein Fan von verschachteltem Code sind, werden Sie froh sein, dass Sie ternäre Ausdrücke unendlich verschachteln können. 'var x = thisIsTrue? 1: Das ist wahr? 2: 3' usw. –

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

oder sogar

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

Pardon der Luft Code, ich bin mit einer Tablette.

Sie können tun, was Sie mit dem ternären Operator wollen (https://msdn.microsoft.com/en-us/library/ty67wk28.aspx) wie folgt ...

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

Grundsätzlich wirkt dies wie eine Inline "if" Anweisung. Wenn der Teil vor dem Fragezeichen wahr ist, erhalten Sie das Bit zwischen dem Fragezeichen und dem Doppelpunkt. Wenn falsch, erhalten Sie das Bit nach dem Doppelpunkt.

Wenn das keinen Sinn macht, post zurück und ich werde versuchen, ein klareres Beispiel zu geben, wenn ich auf einem echten Computer bin.

Verwandte Themen