ああ、あなたはちょうど良い三次虐待が好きではありませんか?:) 次の式を検討してください。
true ? true : true ? false : false
今、完全に当惑している人のために、これはtrueと評価されると言えます。つまり、これは次と同等です。
true ? true : (true ? false : false)
しかし、これは信頼できますか?状況によっては、これにならないことを確信できますか:
(true ? true : true) ? false : false
何人かは言うかもしれません -まあ、括弧を追加するか、丸括弧を使わないでください - 結局のところ、三項演算子が悪であることはよく知られている事実です!
確かにそうですが、実際に意味を成す状況がいくつかあります。好奇心旺盛な人のために - 私は一連のプロパティによって 2 つのオブジェクトを比較するコードを書いています。次のように冷静に書くと、かなりいいでしょう。
obj1.Prop1 != obj2.Prop1 ? obj1.Prop1.CompareTo(obj2.Prop1) :
obj1.Prop2 != obj2.Prop2 ? obj1.Prop2.CompareTo(obj2.Prop2) :
obj1.Prop3 != obj2.Prop3 ? obj1.Prop3.CompareTo(obj2.Prop3) :
obj1.Prop4.CompareTo(obj2.Prop4)
明確かつ簡潔。ただし、最初のケースのように機能する三項演算子の結合性に依存します。括弧はそれからスパゲッティを作るだけです.
それで - これはどこかに指定されていますか?私はそれを見つけることができませんでした。