筆者最近在維護前人棄坑的C# 專案的程式碼看到?跟:,這是啥東西?
一開始以為是lambda 在C#中的應用,後來經查詢後才發現是三元運算子
什麼是三元運算子呢?
三元運算子是由 兩個表達式 跟一個運算式組成,以C 為例 ,大約是下面的表達方式,但筆者是有看沒有懂
hello ? monkey: money
以python 的呈現方式如下:
hello = monky if x.sayhello() else money
上面的敘述等同下面的寫法
if x.sayhello():
hello = monky
else:
hello = money
快速理解:
三元運算式 = 兩個表達式 加上一個運算元組成
事件為真 if 條件存在 else 事件為假
缺點:
- 條件分支只能為運算式,不支持多條陳述句
- 容易被濫用,很多人將其用于替代if陳述句或是簡化復雜的if嵌套,這會導致上一條中所描述的結果
引用自三元運算子缺點
結論:
筆者覺得這可以讓原始碼變得更簡潔,但筆者在比較lambda 及三元運算子後 還是覺得lambda 比較好用跟好閱讀。 筆者目前在維護前人棄坑的專案中就發現三元運算式被濫用的情況,讓後續維護變成超痛苦。