if(一個返回bool值的條件表達式)
{
程序塊
}
else{}
它的執行過程我們可以通過一個程序來了解
1 static void Main(string[] args) 2 { 3 if (score >= 90) // 條件1 4 { 5 Console.WriteLine("A"); 6 } 7 else if (80 =< score && score < 90) //條件2 這里的score<90根本不執行,沒有理解if else if的本質 8 9 { 10 Console.WriteLine("B");
上面的寫法實際上沒有理解if else if的本質(下划線為錯誤的判斷條件)
if else if的本質是:如果if條件不滿足則執行Else中的條件判斷。基於這個理解,上面的if語句條件1不滿足的話,實際上就意味着score《90
所以條件2中的子條件score<90是多次一舉!或者else if (score<90 && score <=80) ,這里的Score<90 在條件1為假后,肯定為真!
提示用戶輸入用戶名,然后再提示用戶輸入密碼,如果用戶名是"admin"和密碼是"888888",那么提示正確
否則,如果用戶名不是Admin,則提示用戶名不存在,如果用戶名是Admin則提示密碼不正確.
1 static void Main(string[] args) 2 { 3 Console.WriteLine("請輸入用戶名"); 4 string username = Console.ReadLine(); 5 6 Console.WriteLine("請輸入密碼"); 7 string password = Console.ReadLine(); 8 9 if (username == "admin" && 10 password == "888888") 11 { 12 Console.WriteLine("密碼正確"); 13 } 14 else 15 { 16 if (username != "admin") 17 { 18 Console.WriteLine("用戶名不正確"); 19 } 20 else if (password != "888888") 21 { 22 Console.WriteLine("密碼不正確"); 23 } 24 } 25 26 Console.ReadKey(); 27 28 }
上面的寫法,是Else里面嵌套了If Else。下面采用另外一種寫法,是If Else If Else
1 static void Main(string[] args) 2 { 3 Console.WriteLine("請輸入你的用戶名"); 4 string username = Console.ReadLine(); 5 6 Console.WriteLine("請輸入你的密碼"); 7 string password = Console.ReadLine(); 8 9 10 // 下面的If Else If Else 可以成對理解,比如else if else 還是可以作為一個來理解 11 if (username == "admin" && password == "888888") 12 { 13 Console.WriteLine("用戶名和密碼正確"); 14 } 15 else if (username != "admin") 16 { 17 Console.WriteLine("用戶名不正確"); 18 } 19 else // 注意理解上面If Else If 20 { 21 Console.WriteLine("密碼不正確"); 22 } 23 24 Console.ReadKey(); 25 } 26 }
If Else 語句是否使用{}
通常if表達式后只有一個語句的話,不使用{}.同樣的下面的形式卻有不同的結果.
1 if (true) 2 string test ="test"; // 這個會發生編譯錯誤! 3 4 if (true) 5 { 6 string test = "test"; // 這樣子的寫法正確 7 }
Else與靠近If結合
如果if 表達式后面只有一個語句,通常會不寫{},但是這個習慣也可能導致程序出現錯誤;其實在實際情況下,通常以為自己會If Else,但是實際上If Else的組合起來可以構造非常復雜的業務邏輯.而且好的If Else組合一看就明白業務含義,但是差的If Else就容易誤導或者非常難理解這段If Else的含義.最主要要理解if else的邏輯順序。