EDIT: Die ursprüngliche Frage verwendet eine int?
. Es ist jetzt behoben worden.
Dieser Code wird nicht einmal kompilieren, also ja, ich würde sagen, es ist zu kryptisch. die Tatsache beiseite
Typos, dass Sie es geschrieben, ohne leicht Spek, dass es ein Problem gibt (Sie versuchen, eine bool
auf der rechten Seite von der ?? zu verwenden, wenn der LHS ist ein int?
) schlägt vor, es ist nicht ein gute Idee, auch wenn Sie es richtig machen.
Ich müsste ein reales Beispiel sehen, aber ich denke, ich würde normalerweise teilen diese in eine Anweisung mit dem Null Koaleszenz-Operator, und dann eine andere mit dem bedingten Operator. Eine andere Option ist das Verhalten der Nullable-Typen in Bezug auf Operatoren zu verwenden ... aber wieder ist das vernünftig Obskur. (Ich musste mich nur genau daran erinnern, was dieses Verhalten ist!)
Ich mag den Null-Koaleszenz-Operator im Allgemeinen, aber ich denke, die Kombination mit dem bedingten Operator macht es nur ein wenig zu verdunkeln. Ich denke, ich würde es wahrscheinlich in einem Fall akzeptieren, wo ein signifikanter Vorteil darin besteht, dass es ein einzelner Ausdruck ist (z.B. für die Initialisierung, wo die Alternative eine zusätzliche Methode einführt), aber im Allgemeinen würde ich es lieber in zwei Anweisungen aufteilen.
EDIT: Eine Alternative in dieser Fall ist, nur zu vergleichen, gegen „true“ - die überflüssig aussieht, ist aber nicht im Fall von bool?
:
result = (testBool == true) ? "Yes" : "No";
Die Klammern sind nicht erforderlich natürlich, aber fügen Sie Klarheit IMO.
Ich denke, das ist einfacher: Das Ergebnis ist nur "Ja", wenn testBool
tatsächlich wahr ist; sonst ist es "Nein". Wenn Sie "Standard" auf Ja möchten, würden Sie schreiben:
result = (testBool == false) ? "No" : "Yes";
Ich denke, es ist obskur! –
Ich denke, dieser Code wird nicht kompiliert als testbool ist Integer –
Nach Ihren Änderungen kompiliert es, aber IMHO ist es nicht lesbar –