Frage

Wenn Sie ein Kind waren, haben Sie jemals Ihre Eltern fragen, wie etwas zu buchstabieren und sie sagten Sie gehen, um es zu sehen? Mein erster Eindruck war immer, „gut, wenn es bis aussehen könnte würde ich nicht brauchen Hilfe, um es zu buchstabieren“. (Ja ja ich weiß phonetics)

... wie auch immer, ich hatte nur zu einem bestimmten Code und ich fand ein Beispiel wie:

 txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;

kann ich herausfinden, was diese Operation tut, aber natürlich kann ich nicht googlen? oder:. und ich kann sie finden, wenn für „c # Operatoren“, LINQ, Lambda-Ausdrücke suchen, etc. Also ich diese dumme Frage stellen habe, damit ich gehen kann darüber zu lesen beginnen

Was sind diese Operatoren?

War es hilfreich?

Lösung

?: ist der Konditionaloperator und der beste Weg, um herauszufinden, hier fragen!

condition ? first_expression : second_expression;
  

Wenn die Bedingung wahr ist, wird zunächst Ausdruck ausgewertet und das Ergebnis wird; wenn er falsch ist, wird der zweite Ausdruck ausgewertet und wird das Ergebnis. Nur einer der beiden Ausdrücke je ausgewertet wird.

Es ist sehr hilfreich, um die Lesbarkeit der Zuordnungen, wenn der gesamte Ausdruck ist relativ kurz:

string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname

ist viel einfacher und schneller als:

string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
    name = user.Nickname;
}

Andere Tipps

? ist eine Inline-if Aussage. Dies bedeutet, dass wenn checkbox.Checked true ist, dann CharacterCasing.Upper der Wert des Ausdrucks sein wird, wird sonst CharacterCasing.Normal sein.

Es funktioniert wie folgt:

type value = condition ? trueValue : falseValue;

das ist ein Inline-if-Anweisung. "?" das ist der Code für, wenn „:“ die für das andere ist

.

Übrigens ist es passiert, so dass Sie Suche nach ":" auf wikipedia und finden diese.

Beachten Sie, dass es manchmal auch als "der" ternäre Operator, da ich die einzigen ternären (3-Argument) Operator in C-ähnlichen Sprachen.

Btw. Wie Sie C # Check out lernen ?? Es Operator ist manchmal viel bessere Alternative zu:?.

Bedenken Sie:

Console.WriteLine(user.LastName ?? "no last name provided");

vs:

Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top