布林值邏輯運算子- C# 參考

文章推薦指數: 80 %
投票人數:10人

^ 運算子會計算其運算元的邏輯互斥OR,其也稱為邏輯XOR。

如果 x 評估為 true 且 y 評估為 false ,或是 x 評估為 false 且 ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 目錄 布林值邏輯運算子(C#參考) 發行項 06/23/2022 5位參與者 本文內容 下列運算子會使用bool運算元執行邏輯作業: 一元(邏輯否定)運算子。

二元(邏輯AND)、(邏輯OR),以及(邏輯專有或)運算子。

那些運算子一律會評估兩個運算元。

二元(條件式邏輯AND)和(條件式邏輯OR)運算子。

那些運算子只會在必要時才評估右邊的運算元。

針對整數數數值型別的運算元,、|和^運算子會執行位邏輯運算。

如需詳細資訊,請參閱位元與移位運算子。

邏輯否定運算子! 一元前置!運算子會計算其運算元的邏輯否定。

也就是說,它會在運算元評估為false時產生true,並在運算元評估為true時產生false: boolpassed=false; Console.WriteLine(!passed);//output:True Console.WriteLine(!true);//output:False 從c#8.0開始,一元!後置運算子是!。

邏輯AND運算子& &運算子會計算其運算元的邏輯AND。

若x及y皆求出true,那麼x&y的結果會是true。

否則,結果為false。

&即使左運算元評估為false,運算子仍會false評估這兩個運算元,如此一來,無論右邊運算元的值為何,都會產生運算結果。

在下列範例中,&運算子的右邊運算元是方法呼叫;無論左邊運算元的值為何,系統都會執行該呼叫: boolSecondOperand() { Console.WriteLine("Secondoperandisevaluated."); returntrue; } boola=false&SecondOperand(); Console.WriteLine(a); //Output: //Secondoperandisevaluated. //False boolb=true&SecondOperand(); Console.WriteLine(b); //Output: //Secondoperandisevaluated. //True 條件邏輯AND運算子也會計算其運算元的邏輯AND,但如果右邊運算元的值評估為false,系統便不會評估左邊運算元。

針對整數數數值型別的運算元,運算子會計算其運算元的位邏輯and。

一元的&運算子是&。

邏輯互斥OR運算子^ ^運算子會計算其運算元的邏輯互斥OR,其也稱為邏輯XOR。

如果x評估為true且y評估為false,或是x評估為false且y評估為true時,x^y的結果將會為true。

否則,結果為false。

也就是說,針對bool運算元,^運算子會計算與不bool!=相同的結果。

Console.WriteLine(true^true);//output:False Console.WriteLine(true^false);//output:True Console.WriteLine(false^true);//output:True Console.WriteLine(false^false);//output:False 針對整數數數值型別的運算元,運算子會計算其運算元的位邏輯互斥or。

邏輯OR運算子| |運算子會計算其運算元的邏輯OR。

若x或y其中一項的值為true,x|y的結果會是true。

否則,結果為false。

|即使左運算元評估為true,運算子仍會true評估這兩個運算元,如此一來,無論右邊運算元的值為何,都會產生運算結果。

在下列範例中,|運算子的右邊運算元是方法呼叫;無論左邊運算元的值為何,系統都會執行該呼叫: boolSecondOperand() { Console.WriteLine("Secondoperandisevaluated."); returntrue; } boola=true|SecondOperand(); Console.WriteLine(a); //Output: //Secondoperandisevaluated. //True boolb=false|SecondOperand(); Console.WriteLine(b); //Output: //Secondoperandisevaluated. //True 條件式邏輯OR運算子也會計算其運算元的邏輯OR,但如果左邊運算元的值評估為true,系統便不會評估右邊運算元。

針對整數數數值型別的運算元,運算子會計算其運算元的位邏輯or。

條件邏輯AND運算子&& 條件邏輯AND運算子&&,也稱為「捷徑運算」邏輯AND運算子,會計算其運算元的邏輯AND。

若x及y皆求出true,那麼x&&y的結果會是true。

否則,結果為false。

如果x評估為false,則不會評估y。

在下列範例中,&&運算子的右邊運算元是方法呼叫;如果左邊運算元的值評估為false,系統便不會執行該呼叫: boolSecondOperand() { Console.WriteLine("Secondoperandisevaluated."); returntrue; } boola=false&&SecondOperand(); Console.WriteLine(a); //Output: //False boolb=true&&SecondOperand(); Console.WriteLine(b); //Output: //Secondoperandisevaluated. //True 邏輯and運算子也會計算其運算元的邏輯and,但一律會評估這兩個運算元。

條件邏輯OR運算子|| 條件邏輯OR運算子||,也稱為「捷徑運算」邏輯OR運算子,會計算其運算元的邏輯OR。

若x或y其中一項的值為true,x||y的結果會是true。

否則,結果為false。

如果x評估為true,則不會評估y。

在下列範例中,||運算子的右邊運算元是方法呼叫;如果左邊運算元的值評估為true,系統便不會執行該呼叫: boolSecondOperand() { Console.WriteLine("Secondoperandisevaluated."); returntrue; } boola=true||SecondOperand(); Console.WriteLine(a); //Output: //True boolb=false||SecondOperand(); Console.WriteLine(b); //Output: //Secondoperandisevaluated. //True 邏輯or運算子也會計算其運算元的邏輯or,但一律會評估這兩個運算元。

可為Null的布林值邏輯運算子 針對bool?運算元,bool?和&運算子支援三值邏輯,如下所示: 只有當運算子的運算元評估為true時,&才會產生true運算子。

x如果或y評估為false,即使另一個運算元評估為null),x&y也會產生false(。

否則,的結果x&y為null。

只有當運算子的運算元評估為false時,|才會產生false運算子。

x如果或y評估為true,即使另一個運算元評估為null),x|y也會產生true(。

否則,的結果x|y為null。

下表呈現該語義: x y x&y x|y true true true true true false false true true null null true false true false true false false false false false null false null null true null true null false false null null null null null 那些運算子的行為和具有可為Null實值類型之一般運算子的行為並不相同。

一般而言,已針對某個實值類型之運算元定義的運算子,也可以搭配相對應可為Null實值類型的運算元使用。

如果有任何運算元評估為,就null會產生null這類運算子。

但是,&即使其中一個運算元評估為null,和|運算子也可以產生非null。

如需可為null實值型別的運算子行為詳細資訊,請參閱可為null的實值型別一文的「提升運算子」一節。

您也可以使用!和^運算子bool?搭配運算元,如下列範例所示: bool?test=null; Display(!test);//output:null Display(test^false);//output:null Display(test^null);//output:null Display(true^null);//output:null voidDisplay(bool?b)=>Console.WriteLine(bisnull?"null":b.Value.ToString()); 條件式邏輯運算子&&,但||不支援bool?運算元。

複合指派 若是二元運算子op,表單的複合指派運算式 xop=y 相當於 x=xopy 但只會評估x一次。

&、|和^運算子支援複合指派,如下列範例所示: booltest=true; test&=false; Console.WriteLine(test);//output:False test|=true; Console.WriteLine(test);//output:True test^=false; Console.WriteLine(test);//output:True 注意 條件邏輯運算子&&和||不支援複合指派。

運算子優先順序 下列清單會依優先順序將邏輯運算子排序(從最高到最低): 邏輯負運算子! 邏輯AND運算子& 邏輯互斥OR運算子^ 邏輯OR運算子| 條件邏輯AND運算子&& 條件邏輯OR運算子|| 使用括號()來變更由運算子優先順序所強制執行的評估順序: Console.WriteLine(true|true&false);//output:True Console.WriteLine((true|true)&false);//output:False boolOperand(stringname,boolvalue) { Console.WriteLine($"Operand{name}isevaluated."); returnvalue; } varbyDefaultPrecedence=Operand("A",true)||Operand("B",true)&&Operand("C",false); Console.WriteLine(byDefaultPrecedence); //Output: //OperandAisevaluated. //True varchangedOrder=(Operand("A",true)||Operand("B",true))&&Operand("C",false); Console.WriteLine(changedOrder); //Output: //OperandAisevaluated. //OperandCisevaluated. //False 如需依優先順序層級排序的c#運算子完整清單,請參閱c#運算子文章的運算子優先順序一節。

運算子是否可多載 使用者定義型別可以多載、&|、和^運算子。

當二元運算子多載時,對應的複合指派運算子也會隱含地多載。

使用者定義型別無法明確地多載複合指派運算子。

使用者定義類型無法多載條件邏輯運算子&&和||。

不過,若使用者定義類型以某種方式多載True和False運算子以及或|運算子,就可以針對該類型的運算元個別評估&&或||作業。

如需詳細資訊,請參閱C#語言規格的使用者定義條件式邏輯運算子一節。

C#語言規格 如需詳細資訊,請參閱C#語言規格的下列幾節: 邏輯否定運算子 邏輯運算子 條件邏輯運算子 複合指派 另請參閱 C#參考資料 C#運算子與運算式 位元與移位運算子 本文內容



請為這篇文章評分?