玩過(guò)游戲的朋友們都知道,游戲結(jié)局一般會(huì)有好些個(gè),只有完成相應(yīng)的條件,那么才會(huì)解鎖對(duì)應(yīng)的結(jié)局。今天,這篇文章來(lái)學(xué)習(xí)一下關(guān)于 C# 語(yǔ)言中的條件判斷語(yǔ)句。
一、條件判斷語(yǔ)句
1、條件運(yùn)算符
在第三天的學(xué)習(xí)記錄中,在其他運(yùn)算符中,有提到一種條件判斷的條件運(yùn)算符 exp?x:y
如果 emp
判定結(jié)果為 true,那么結(jié)果將會(huì)返回 x,否則返回 y。
int a = 2;
int b = 3;
string str = a > b ? "a比b大" : "b比a大";
這里的條件運(yùn)算符和下面將要介紹的 if-else
語(yǔ)句大同小異。
2、判斷語(yǔ)句
(1)if
語(yǔ)句
在編程語(yǔ)言中,一個(gè) if
語(yǔ)句跟著一個(gè)布爾表達(dá)式和一個(gè)或者多個(gè)的程序語(yǔ)句:
if(emp)
{
// 語(yǔ)句 1
// 語(yǔ)句 2
// ...
}
只有當(dāng)布爾表達(dá)式 emp
的結(jié)果為 true
,才會(huì)執(zhí)行 if
語(yǔ)句中的程序語(yǔ)句,否則的話,就會(huì)跳過(guò) if
語(yǔ)句。
(2)if-else
語(yǔ)句
一般的判斷,預(yù)想有兩個(gè)或者多個(gè)的結(jié)果。比如上面提到的條件運(yùn)算符,比較兩個(gè)數(shù)值的大小,如何都需要輸出一個(gè)結(jié)果。
因此,if
語(yǔ)句在布爾表達(dá)式為 true
的時(shí)候,輸出其中內(nèi)容;而 else
語(yǔ)句是在當(dāng)布爾表達(dá)式為 false
的時(shí)候,輸出其中的內(nèi)容。
int a = 3;
int b = 2;
if(a > b){
Console.WriteLine("a 大于 b ");
}
else{
Console.WriteLine("a 小于 b ");
}
很容易看出,這段代碼的邏輯其實(shí)有一點(diǎn)問(wèn)題,如果 a 和 b 是一樣的值,哪個(gè)輸出結(jié)果都是錯(cuò)誤的。這時(shí)候在一整個(gè)條件語(yǔ)句,可能需要多個(gè)判斷語(yǔ)句。多個(gè)判斷語(yǔ)句,就需要使用 if - else if - else
語(yǔ)句。
if(a = b){
Console.WriteLine("a 等于 b");
}
else if(a > b){
Console.WriteLine("a 大于 b");
}
else{
Console.WriteLine("a 小于b");
}
這樣一來(lái),整個(gè)邏輯就顯得清楚和明確了。
(3)嵌套判斷
在滿足某個(gè)前提的情況下,判斷是否滿足另外一個(gè)前提。這時(shí)候就需要使用嵌套語(yǔ)句來(lái)多重判斷。
例如:你想去網(wǎng)吧玩游戲,第一個(gè)條件首先年齡要大等于18歲,其次的條件是錢(qián)包里的錢(qián)要帶足了。要不然,就不能進(jìn)去玩游戲了。
if(age >= 18){
if(money >= 10){
Console.WriteLine("我選亞索!");
}
}
滿足了兩個(gè)條件了,那么就可以游戲里面快樂(lè)地哈撒給了!
(4)switch 語(yǔ)句
如果需要判斷的條件有十幾二十個(gè)的,那么如果一直使用 else if
來(lái)判斷,會(huì)使得代碼看上去臃腫冗雜。
switch
語(yǔ)句允許測(cè)試當(dāng)一個(gè)變量等于多個(gè)值時(shí)的情況。
// 語(yǔ)法
switch(expression){
case exp1:
statement1;
break;
case exp2:
statement2;
break;
// ...
case expn:
statementn;
break;
default:
d_statement;
break;
}
switch
語(yǔ)句后面的expression
必須是一個(gè)整數(shù)或枚舉類型,或者是一個(gè) class 類型。- 一個(gè)
switch
語(yǔ)句中可以有任意個(gè)case
語(yǔ)句,case
后面的值一定是和expression
是同類型的,而且必須是常量。 default
語(yǔ)句可有可無(wú),當(dāng)所有的case
語(yǔ)句都不滿足,如果存在,就會(huì)執(zhí)行default
的語(yǔ)句;如果不存在,輸出一個(gè)空值。- C# 不支持從一個(gè)
case
貫穿到另一個(gè)case
語(yǔ)句。因此,break
關(guān)鍵詞是一定要的。遇到第一個(gè)break
則就會(huì)結(jié)束整個(gè)switch
語(yǔ)句。
(4)嵌套 switch
語(yǔ)句
switch
語(yǔ)句同樣也是可以嵌套的。
switch(num1){
case 1:
Console.WriteLine("這個(gè) 1 是屬于外部的");
switch(num2){
case 1:
Console.WriteLine("這個(gè) 1 是屬于內(nèi)部的");
break;
}
break;
}
一個(gè) switch
語(yǔ)句中嵌套了另一個(gè) switch
語(yǔ)句,即使外部和內(nèi)部的 case
常量值包含相同的值,是不會(huì)產(chǎn)生矛盾的。
值得注意的是,內(nèi)部的 case
最后跟了 break
語(yǔ)句,外部的 case
也一定不能忘記 break
關(guān)鍵詞。
二、總結(jié)
到這里,關(guān)于 C# 的條件判斷語(yǔ)句的學(xué)習(xí)記錄就已經(jīng)結(jié)束了。
下一篇文章,將開(kāi)始學(xué) C# 中的循環(huán)語(yǔ)句。