1.聲明布爾變量
和現實世界不同,程序世界的每一件事情要麼黑,要麼白;要麼對,要麼錯;要麼真,要麼假。例如,假定創建整數變量X,把值99賦給它,然後問:“x中包含值99嗎?”答案顯然是肯定的。如果問:“X小於10嗎?”答案顯然是否定的。這些正是布爾表達式的例子。布爾表達式肯定求值爲true或false。
bool變量只能容納兩個值之一:true或false。例如以下語句聲明bool變量areYouReady,將true值賦給它,並在控制檯上輸出其值:
bool areYouReady;
areYouReady = true;
Console.WriteLine(areYouReady); //在控制檯輸出True
2.使用布爾操作符
2.1理解相等和關係操作符
兩個更常用的布爾操作符是相等(==)和不等(!=)操作符。這兩個二元操作符判斷一個值是否與相同類型的另一個值相等,結果是bool值。下表演示這些操作符,以int變量age爲例。
注:不要混淆相等操作符(==)和賦值操作符(=)。表達式x==y比較x和y,兩個值相等就返回true。而表達式x=y是將y的值賦給x。
與==和!=密切相關的是關係操作符,它們判斷一個值是小於還是大於同類型的另一個值。下表演示了這些操作符。
2.2理解條件邏輯操作符
邏輯與:&&
邏輯或:||
作用:將兩個布爾表達式或值合併成一個布爾結果。
注意:只有作爲操作數的兩個布爾表達式都爲true,操作符&&的結果才爲true;而只要兩個操作數任何一個爲true,操作符||的求值結果就爲true
例如:
bool flag ;
flag1 = (6>5) && (2>1);//true
flag2 = (6<5) || (2>1);//true
2.3短路求值
操作符&&和||都支持短路求值。即有時根本沒必要兩個操作數都求值。
總結:
&&:假定左操作數求值爲false,整個表達式的結果肯定是false,無論右操作數的值是什麼。
||:假定左側的布爾表達式求值爲true,則整個表達式的結果肯定是true。
2.4操作符的優先級和結合性總結
見下表:
注意:操作符&&和||的優先級不同,前者高於後者。
3.使用if語句做出判斷
3.1理解if語句的語法
if語句的語法如下所示(if和else是C#關鍵字)
if (booleanExpression)
statement - 1;
else
statement - 2;
如果booleanExpression(布爾表達式)求值爲true,就運行statement - 1;否則運行statement - 2。else關鍵字和後續的statement - 2是可選的。如果沒有else子句,而且booleanExpression爲false,那麼什麼事情都不會發生,程序繼續執行if語句之後的代碼。
3.2使用代碼塊分組語句
在前面的if語法中。If(booleanExpression)後面只有一個語句,關鍵字else後面也只有一個語句。但經常要在布爾表達式爲true的前提下執行兩個或更多語句。這時可將要運行的語句分組到新方法中,然後調用方法。但更簡單的做法是將語句分組到代碼塊中。代碼塊是用大括號封閉的一組語句。
下列兩個語句將seconds重置爲0,並使minutes遞增。這兩個語句被放到代碼塊中。如果seconds的值等於59,整個代碼塊都會執行:
int seconds = 0;
int minutes = 0;
…
if(seconds == 59)
{
seconds = 0;
minutes++;
}
else
{
seconds++;
}
3.3嵌套if語句
舉例:
if(day == 0)
{
dayName = "Sunday";
}
else if(day == 1)
{
dayName = "Monday";
}
//…
else if(day == 6)
{
dayName ="Saturday"
}
else
{
dayName = "unknown"
}
4.使用switch語句
4.1理解switch語句的語法
語法:
switch( controllingExpression)
{
case constantExpression:
statements
break;
case constantExpression:
statements
break;
…
default:
statements
break;
}
例如,前面的嵌套if語句可改寫成以下switch語句:
switch(day)
{
case 0:
dayName = "Sunday";
break;
case 1:
dayName = "Sunday";
break;
…
default:
dayName = "Unknown";
break;
}
4.2遵循switch語句的規則
switch語句很有用,但使用須謹慎。switch語句要嚴格遵循以下規則。
(1)switch語句的控制表達式只能是某個整型(int,char,long等)或string。其它任何類型(包括float和double類型)只能用if語句。
(2)case標籤必須是常量表達式
(3)case標籤必須唯一,不允許兩個case標籤具有相同功能
(4)可以連續寫多個case標籤(中間不能插額外的語句),指定在多種情況下都運行相同的語句。如果像這樣寫,最後一個case標籤之後的代碼將適用於所有case。但假如兩個標籤之間有額外的代碼,就不能從第一個標籤貫穿(也稱直通)到第二個標籤,編譯器會報錯。例如:
switch(trumps)
{
case Hearts:
case Diamonds: //允許直通——標籤之間無額外代碼
color = "Red"; //Hearts和Diamonds兩種情況都執行相同的代碼
break;
case Clubs:
color = "Black";
case Spades: //出錯——標籤之間有額外代碼
color = "Black";
break;
}