C# 操作符之三元操作符淺析
C# 操作符之三元操作符“?:”是什么呢?
C# 操作符之三元操作符“?:”有時也稱為條件操作符。
對條件表達式b?x:y,先計算條件b,然后進行判斷。
如果b的值為true,計算x的值,運算結(jié)果為x的值;否則,計算y,運算結(jié)果為y的值。
一個條件表達式從不會又計算x,也計算y。條件操作符是向右關(guān)聯(lián)的,也就是說,從左向右分組計算。
C# 操作符之三元操作符“?:”操作實例:
表達式a?b:c?d:e將按a?b:(C?d:e)形式執(zhí)行。
?:的第二和第三個操作數(shù)控制了條件表達式的類型。設(shè)x和y分別是第二個和第三個操作數(shù)的類型,那么:
●如果x和y為同一類型,則該類型即是條件表達式的類型。
●否則,如果從x到y(tǒng)存在一個隱式轉(zhuǎn)換,但不存在y到x的轉(zhuǎn)換,那么y是條件表達式的類型。
●否則,如果從y到x存在一個隱式轉(zhuǎn)換,但不存在x到y(tǒng)的轉(zhuǎn)換,那么x是條件表達式的類型。
●否則,沒有定義任何表達式類型,發(fā)生編譯時錯誤
C# 操作符之三元操作符“?:”的基本內(nèi)容就向你介紹到這里,希望對你了解和學習C# 操作符之三元操作符“?:”有所幫助。
三元操作符也成為條件操作符,他顯得比較特別,因為有三個操作數(shù),但是他又確實屬于操作符的一種
其形式為
boolean-exp?value0 :value1
如果boolean-exp表達式結(jié)果為true,就計算value0,而且這個計算結(jié)果也就是操作符最終產(chǎn)生的值。如果boolean-exp表達式結(jié)果為false,就計算value1,同樣的,他的結(jié)果也將成為操作符最后的值。
當然它也可以被if-else代替,但是三元操作符與if-else是完全不同的,操作符會產(chǎn)生一個值。
public class TernaryIfElse{
static int ternary(int i){
return i<10?i*100:i*10;
}
static int standardIfElse(int i){
if(i<10)
return i*100;
else
return i*10;
}
public static void main(String [] args){
System.out.println(ternary(9));
System.out.println(ternary(10));
System.out.println standardIfElse( (9));
System.out.println standardIfElse( (10));
}
}
輸出
900
100
900
100
相比之下三元運算符要緊湊很多,而if-else更易理解