2017年9月12日 星期二

[C#] 條件式中常用的&和&& |和||的差異

取自
http://charleslin74.pixnet.net/blog/post/454321301-%5bc%23%5d-%E6%A2%9D%E4%BB%B6%E5%BC%8F%E4%B8%AD%E5%B8%B8%E7%94%A8%E7%9A%84%26%E5%92%8C%26%26-%7c%E5%92%8C%7c%7c%E7%9A%84%E5%B7%AE%E7%95%B0

C#中條件式我們常用&或&&來確認條件是否全部符合規範,而用|或||來確認條件是否部分符合規範
那為什麼又要有&和&&呢?我們用例子來說明
int myAge = 12;
string bloodType = "O";
if(myAge == 12 & bloodType == "O")
{
    Console.WriteLine("do something");
}
上面的例子只有一個&,所以會先檢查myAge是不是等於12,再檢查bloodType是不是等於O.
那今天我們改一下例子
int myAge = 13;
string bloodType = "O";
if(myAge == 12 & bloodType == "O")
{
    Console.WriteLine("do something");
}
它一樣會先檢查myAge是不是等於12,再檢查bloodType是不是等於O.
但這時你會有個疑問,&不是二個條件式都要為真時才符合嗎,那第一個myAge就不符合了,何必浪費時間去檢查第二個條件呢??
所以才會有&&的出現定
int myAge = 13;
string bloodType = "O";
if(myAge == 12 && bloodType == "O")
{
    Console.WriteLine("do something");
}
改成用&&後,當確認myAge=12時,發現條件不合,就直接跳開了,不會去檢查 bloodType == "O"
這樣程式執行就比較有效率,所以要注意的是,我們通常會把常變動或者重要的條件擺在比較的第一個.
而|和||的差異,其實就&和&&是相同的
int myAge = 13;
string bloodType = "A";
if(myAge == 13 || bloodType == "O")
{
    Console.WriteLine("do something");
}
| 及||是二者中有一為真就符合條件,像上例我們使用||就表示會先檢查myAge == 13
這樣就馬上符合條件了,所以它就不會去檢查bloodType == "O",而是直接執行後續的處理了.
所以 | 是將所有條件都比對後才決定怎麼做,而 || 是只要符合的條件就直接做,後續的條件就不比對了.
是比較有效率的.

沒有留言:

張貼留言