App下載

C# 編程語(yǔ)言學(xué)習(xí)系列(五)

夢(mèng)在深巷 2021-12-10 16:35:15 瀏覽數(shù) (2705)
反饋

玩過(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ǔ)句。

C#

0 人點(diǎn)贊