if語句是最常用的語句,它根據布爾表達式的值來判斷是否執行後面的內嵌語句。
格式:
if(boolean-exprission)embedded-statement
或
if(boolean-expression)embeded-statement
else embeded-statement
當布爾表達式的值為真,則執行if後面的內嵌語句embeded-statement。為假則程序繼續執行。如果有else語句,則執行else後面的內嵌語句,否則繼續執行下一條語句。
例如下面的例子用來對一個浮點數x進行四捨五入,結果保存到一個整數i中:
if(x-int(x)>0.5)
{
i=int(x)+1;
}
else
{
i=int(x);
}
如果if或else之後的嵌套語句只包含一條執行語句,則嵌套語句的大括號可以省略。如果包含了兩條以上的執行語句,對嵌套部分一定要加上大括號。
如果程序的邏輯判斷關系比較復雜,通過會采用條件判斷嵌套語句。if語句可以嵌套使用,即在判斷之中又有判斷,具體形式如下:
if(boolean-expression) { if(boolean-expression) {......}; else {......}/ ...... } else { if(boolean-expression) {......}; else {......}; ...... }
此時應該注意,每一條else與離它最近且沒有其它else與之對應的if相搭配。比如有下面一條語句:
if(x)if(y)F();else G();
它實際上應該等價於下面的寫法:
if(x){ if(y){ F(); } else{ G(); } }
舉一個例子,設有一個數學函數的表達式為:
則相應的程序流程圖為:
那麼使用條件語句編寫的代碼如下:
if(x>0){ y=1; } else{ if(x==0){ y=0; } esle{ y=-1; } }
注意:C#的if語句與C、C++不同,即if後的邏輯表達式必須是布爾類型的。
請看一個判斷是否往應用程序傳送參數的例子。
程序清單8-1:
using System; class Test { static void Main(string[] args){ if(args.Length==0) Console.WriteLine("No arguments were provided"); else Console.WriteLine("Arguments were provided"); } }
其中,args.Length==0是一個布爾表達式。但是,對於C或C++程序員,他們可能會習慣於編寫這樣的代碼:
if(args.Length)
{......};
這在C#中是不允許的,因為if語句僅允許布爾(bool)數據類型的結果,而字符串的Length屬性對象返回一個整型(integer)。編譯器將出現報告錯誤信息。