Ich habe eine einfache Variablenzuweisung wie:

  var color = order == "PO" ? Color.LightGreen : Color.LightBlue;

Meine Frage ist, ist es möglich, eine weitere Bedingung hinzuzufügen, um eine dreifache Bedingung zu erfüllen, etwa:

 var color = order == "PO" ? Color.LightGreen : "SO" ? Color.Lavender : Color.LightBlue;

Ich möchte also sagen, wenn die Reihenfolge gleich "PO" ist, geben Sie LightGreen zurück, wenn es "SO" ist, geben Sie Lavender zurück und wenn es sich von diesen beiden unterscheidet, geben Sie LightBlue zurück. Wie kann ich das erreichen? Grüße

c#
1
Jonathan 18 Jän. 2019 im 20:32

3 Antworten

Beste Antwort

Ja, verwenden Sie eine zusätzliche Bedingung im falschen Abschnitt, wie gezeigt:

var color = order == "PO" ? Color.LightGreen : order == "SO" ? Color.Lavender : Color.LightBlue;

Die Lesbarkeit ist wichtig. Was passiert also, wenn Sie einen vierten Fall haben? Möglicherweise möchten Sie einfach die if/else Logik oder eine switch verwenden.

4
JonH 18 Jän. 2019 im 17:34

Ja, Sie können, aber es wird schwer zu lesen. Beispiele für verschachtelte Ternäre finden Sie unter hier.

Es ist wahrscheinlich besser, einen Schalter durchzuführen:

  String order;
  Color color;
        switch (order)
        {
            case "PO":
                color = Color.LightGreen;
                break;
            case "SO":
                color = Color.Lavender;
                break;
            default:
                color = Color.LightBlue;
                break;
        }

Bearbeitet, um den Schalter an Ihren Fall anzupassen;)

2
jreese 18 Jän. 2019 im 18:26

Drei könnten das Ende der ternären Verkettung sein, die gut aussieht, und Sie könnten wie erwähnt zu klassischen if s oder switch-case wechseln, aber auch die Verwendung eines Dictionary<string, Color> für eine schnelle Suche in Betracht ziehen.

0
Jesse C. Slicer 18 Jän. 2019 im 18:53