VC#2005快速入門(mén)之使用if語(yǔ)句

字號(hào):

如果想根據(jù)一個(gè)布爾表達(dá)式的結(jié)果選擇執(zhí)行兩個(gè)不同的代碼塊,就可以使用if語(yǔ)句。
    理解if語(yǔ)句的語(yǔ)法
    if語(yǔ)句的語(yǔ)法格式如下(if和else是關(guān)鍵字):
    if ( booleanExpression )
    statement-1;
    else
    statement-2;
    如果booleanExpression求值為true,就運(yùn)行 statement-1;否則就運(yùn)行statement-2。else關(guān)鍵字和后續(xù)的statement-2是可有可無(wú)的。如果沒(méi)有else子句,那么在booleanExpression為false的前提下,什么都不會(huì)發(fā)生。
    例如,以下if語(yǔ)句用于遞增一個(gè)秒表的秒針(暫時(shí)忽略分鐘)。如果seconds的值是59,就重置為0;否則就使用操作符++來(lái)遞增:
    int seconds;
    ...
    if (seconds == 59)
    seconds = 0;
    else
    seconds++;
    只使用布爾表達(dá)式!
    if語(yǔ)句中的表達(dá)式必須放在一對(duì)圓括號(hào)中。除此之外,表達(dá)式必須是布爾表達(dá)式。在另一些語(yǔ)言中(尤其是C和C++),還可以使用一個(gè)整數(shù)表達(dá)式,編譯器能自動(dòng)將整數(shù)值轉(zhuǎn)換成true(非零值)或false(零值)。C#不允許這樣做。如果寫(xiě)這樣的一個(gè)表達(dá)式,編譯器會(huì)報(bào)錯(cuò)。
    假如在if語(yǔ)句中不慎寫(xiě)了一個(gè)賦值表達(dá)式,而不是執(zhí)行一個(gè)相等性測(cè)試,C#編譯器也能識(shí)別你的錯(cuò)誤。例如:
    int seconds;
    ...
    if (seconds = 59) // 編譯時(shí)錯(cuò)誤
    ...
    if (seconds == 59) // 正確
    不慎而寫(xiě)成賦值表達(dá)式,是C和C++程序容易出現(xiàn)bug的另一個(gè)原因。在C和C++中,會(huì)將所賦的值(59)悄悄地轉(zhuǎn)換成一個(gè)布爾值(任何非零的值都會(huì)被視為true),造成每次都必定執(zhí)行if語(yǔ)句之后的代碼。
    最后,可以將一個(gè)布爾變量作為表達(dá)式使用,如下例所示:
    bool inWord;
    ...
    if (inWord == true) // 可以,但不常用
    ...
    if (inWord) // 更好
    使用塊來(lái)分組語(yǔ)句
    有時(shí),需要在一個(gè)布爾表達(dá)式為true的前提下運(yùn)行兩個(gè)或者更多的語(yǔ)句??梢詫⒁\(yùn)行的語(yǔ)句分組到一個(gè)新方法中,然后調(diào)用那個(gè)方法。但是,一個(gè)更簡(jiǎn)單的做法是將語(yǔ)句分組到一個(gè)塊(block)中。塊是指用一對(duì)大括號(hào)來(lái)封閉的一系列語(yǔ)句。在下例中,兩個(gè)語(yǔ)句將seconds變量重置為零,并使minutes變量遞增。我們用一個(gè)塊來(lái)分組這兩個(gè)語(yǔ)句。假如seconds的值等于59,就執(zhí)行該塊:
    int seconds = 0;
    int minutes = 0;
    ...
    if (seconds == 59)
    {
    seconds = 0;
    minutes++;
    }
    else
    seconds++;
    重要提示 假如遺漏大括號(hào),將造成兩個(gè)嚴(yán)重后果。首先,C#編譯器只將第一個(gè)語(yǔ)句(seconds=0)與if語(yǔ)句關(guān)聯(lián)起來(lái),下一個(gè)語(yǔ)句(minutes++)將不再成為if語(yǔ)句的一部分。其次,當(dāng)編譯器遇到else關(guān)鍵字時(shí),不會(huì)將它與前一個(gè)if語(yǔ)句關(guān)聯(lián)起來(lái),所以會(huì)報(bào)告語(yǔ)法錯(cuò)誤。