C# Online ! 第十九篇:C# 運算子來嘍 Part VI ~ 『三元運算子』

  • 25598
  • 0
  • C#
  • 2011-07-08

C# Online ! 第十九篇:C# 運算子來嘍 Part VI ~ 『三元運算子』

大家好!  之前介紹運算子的文章內,已經有介紹過一元運算子(Unary), 它需要一個運算元來做運算,也介紹過二元運算子(Binary),它需要兩個運算元來做運算,而這次要介紹給大家的,是 C#裡面唯一的三元運算子(Ternary),所以 ... 沒錯!! 它需要三個運算元來做運算!  來看一下它的特性吧! 用表格表示如下:

 

 

 

運算子

類型

說明

例子

結果

?:

三元運算子
(Ternary)

條件式運算子。也經常稱為三元 (Ternary) 運算子。?: 是根據布林 (Boolean) 運算式的值,決定傳回兩個值的其中一個。?: 運算子的第一個運算元必須是可以隱含地轉換成 bool 的型別之運算式,或是可以實作 operator true 的型別之運算式。如果不符合以上的條件,編譯時會產生錯誤喔。

a ? b : c

它的運算方式是先去判斷條件 a,看 a 是 true 還是 false,如果是 true, 才會去評估 b,並產生運算結果。如果是 false,則是評估 c,並產生運算結果,永遠不會同時去評估 b 與 c。

 

 

再舉一個例子也許會比較清楚:


string resultString = (myInteger < 10) ? "Less than 10" : "Greater than or equal to 10";

 

用以上的例子我們可以看到,resultString 的型別是 string (字串) ,接著會先去評估 myInteger < 10 這個條件為 true 還是 false,如果是 true,會把 "Less than 10" 這各字串的值指派給 resultString,如果是 false,則會把 "Greater than or equal to 10" 這個字串的值指派給 resultString,例如 myInteger 的值是 5,那麼第一個條件(myInteger < 10)判斷的結果是true,"Less than 10"這個值就會指派給resultString 。

 

前篇文章運算子的運算順序中有提到,條件運算子為右向關聯 (Right-Associative) 的運算子,也就是說,運算方向是從右到左。可以看以下的例子:

a ? b : c ? d : e 

運算的順序為  a ? b : (c ? d : e)

而不是  (a ? b : c) ? d : e

這邊要特別小心,不要搞錯運算的順序了!

 

小提醒:使用?:可以有限度的減少程式碼行數,並可讓程式碼增加可讀性,且更簡潔好看,?: 條件式運算子可以代替簡單
                的if-else 結構的計算 ,但是如果是非常大量的條件運算的話,最好還是使用if-else,下一篇將會介紹if-else
                給大家。

 

希望資深的前輩們與跟我一樣剛開始想學習C#的初心者,可以給我一些建議跟鼓勵,或是幫我按個讚!您的鼓勵就是我的動力! 感謝您們 ~

(本文中相關內容有參閱、引述MSDN)

 

 

 

 


如果這篇文章對您有幫助,請幫我點選「我要推薦」、按個讚、或是幫我推到其他平台;您的鼓勵將會是我繼續努力的一大動力!!

若是有任何指教或是需要討論之處,也不用客氣,請在下面留言給我,我將會儘速回覆~

Share | . . . . . . . . . .