跳至頁尾內容
.NET幫助

C# 邏輯運算符(開發者的工作原理)

理解邏輯運算子對於在程式設計中處理條件語句至關重要。 從XOR到算術運算,它們在確定給定條件的真值方面發揮著重要作用。

本指南將帶您通過C#中的邏輯運算子的基礎知識,包括布林值、運算子優先順序、邏輯否定等等。

什麼是邏輯運算子?

邏輯運算子,通常稱為邏輯運算,構成了程式設計中決策的核心。 它們操作布林表達式,對其進行評估以生成真假布林值,這取決於所提供的條件。 這些運算子在控制您的程式流程中發揮著關鍵作用,允許您根據特定標準執行特定的程式碼塊。

下面,我們將深入探討C#中的不同邏輯運算子,理解它們的功能並展示如何將邏輯運算子加入您的應用中以精確高效地執行邏輯運算。

Types of Logical Operators in C

邏輯AND運算子(&&)

邏輯AND運算子(&&)結合兩個布林表達式,並在兩者均為真時返回真。 如果其中一個或兩個為假,則結果為假。 通常用於多條件場景中,所有條件必須滿足。 例如,驗證使用者是否年齡足夠並且有足夠餘額進行購買。

&& 運算子:

  • 評估左操作數
  • 如果左操作數為假,則整個表達式為假
  • 如果左操作數為真,則評估右操作數
  • 如果兩操作數均為真,則表達式為真

如果左操作數為假,則不評估右操作數,因為整個表達式保證為假。

class Program
{
    static void Main(string[] args)
    {
        bool isAdult = true;
        bool hasBalance = false;
        bool canPurchase = isAdult && hasBalance;

        // Output the result to the console; expected output is false
        Console.WriteLine(canPurchase); // Output: false
    }
}
class Program
{
    static void Main(string[] args)
    {
        bool isAdult = true;
        bool hasBalance = false;
        bool canPurchase = isAdult && hasBalance;

        // Output the result to the console; expected output is false
        Console.WriteLine(canPurchase); // Output: false
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim isAdult As Boolean = True
		Dim hasBalance As Boolean = False
		Dim canPurchase As Boolean = isAdult AndAlso hasBalance

		' Output the result to the console; expected output is false
		Console.WriteLine(canPurchase) ' Output: false
	End Sub
End Class
$vbLabelText   $csharpLabel

在此範例中,即使hasBalance為假,所以結果為假。

邏輯OR運算子(

邏輯OR運算子(||) 結合兩個布林表達式,並在至少一個為真時返回真。 如果兩者均為假,則結果為假。 理想的情況是在多個條件中至少有一個必須為真。 例如,允許進入如果一個人是會員或有票。

|| 運算子:

  • 評估左操作數
  • 如果左操作數為真,則整個表達式為真
  • 如果左操作數為假,則評估右操作數
  • 如果任一操作數為真,則表達式為真

如果左操作數為真,則不評估右操作數,因為整個表達式保證為真。

class Program
{
    static void Main(string[] args)
    {
        bool isMember = true;
        bool hasTicket = false;
        bool canEnter = isMember || hasTicket;

        // Output the result to the console; expected output is true
        Console.WriteLine(canEnter); // Output: true
    }
}
class Program
{
    static void Main(string[] args)
    {
        bool isMember = true;
        bool hasTicket = false;
        bool canEnter = isMember || hasTicket;

        // Output the result to the console; expected output is true
        Console.WriteLine(canEnter); // Output: true
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim isMember As Boolean = True
		Dim hasTicket As Boolean = False
		Dim canEnter As Boolean = isMember OrElse hasTicket

		' Output the result to the console; expected output is true
		Console.WriteLine(canEnter) ' Output: true
	End Sub
End Class
$vbLabelText   $csharpLabel

在這裡,由於hasTicket甚至沒有被評估,結果為真。

邏輯NOT運算子(!)

邏輯NOT運算子(!)反轉布林表達式的值。 如果運算數為真,則結果為假,反之亦然。 通常用來反轉條件。 例如,如果某功能已啟用,您可以使用NOT運算子來確定是否應禁用它。

運作原理如下:

  • 評估運算數。
  • 如果運算數為真,則結果為假。
  • 如果運算數為假,則結果為真。
class Program
{
    static void Main(string[] args)
    {
        bool isLoggedOn = false;
        bool showLoginButton = !isLoggedOn;

        // Output the result to the console; expected output is true
        Console.WriteLine(showLoginButton); // Output: true
    }
}
class Program
{
    static void Main(string[] args)
    {
        bool isLoggedOn = false;
        bool showLoginButton = !isLoggedOn;

        // Output the result to the console; expected output is true
        Console.WriteLine(showLoginButton); // Output: true
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim isLoggedOn As Boolean = False
		Dim showLoginButton As Boolean = Not isLoggedOn

		' Output the result to the console; expected output is true
		Console.WriteLine(showLoginButton) ' Output: true
	End Sub
End Class
$vbLabelText   $csharpLabel

在這裡,因為isLoggedOn為假,邏輯NOT運算子返回真。

與其他運算子結合

NOT運算子可以與AND和OR運算子結合來建立更複雜的條件。

bool isWeekend = false;
bool hasVacation = true;
bool isWorkDay = !(isWeekend || hasVacation);

// Output the result to the console; expected output is false
Console.WriteLine(isWorkDay); // Output: false
bool isWeekend = false;
bool hasVacation = true;
bool isWorkDay = !(isWeekend || hasVacation);

// Output the result to the console; expected output is false
Console.WriteLine(isWorkDay); // Output: false
Dim isWeekend As Boolean = False
Dim hasVacation As Boolean = True
Dim isWorkDay As Boolean = Not (isWeekend OrElse hasVacation)

' Output the result to the console; expected output is false
Console.WriteLine(isWorkDay) ' Output: false
$vbLabelText   $csharpLabel

邏輯XOR運算子(^)

邏輯XOR運算子(^)在兩個運算數具有不同值時返回真。 如果兩者相同,則返回假。 當您想確保僅有兩個條件中的一個為真,而不是兩者都為真時,該運算子特別有用。

class Program
{
    static void Main(string[] args)
    {
        bool hasPassword = true;
        bool hasSmartCard = false;
        bool canLogin = hasPassword ^ hasSmartCard;

        // Output the result to the console; expected output is true
        Console.WriteLine(canLogin); // Output: true
    }
}
class Program
{
    static void Main(string[] args)
    {
        bool hasPassword = true;
        bool hasSmartCard = false;
        bool canLogin = hasPassword ^ hasSmartCard;

        // Output the result to the console; expected output is true
        Console.WriteLine(canLogin); // Output: true
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim hasPassword As Boolean = True
		Dim hasSmartCard As Boolean = False
		Dim canLogin As Boolean = hasPassword Xor hasSmartCard

		' Output the result to the console; expected output is true
		Console.WriteLine(canLogin) ' Output: true
	End Sub
End Class
$vbLabelText   $csharpLabel

因為hasSmartCard的值不同,所以邏輯XOR返回真。 如果兩者都為真或兩者都為假,它將返回假。

其他相關運算子

複合賦值運算子

複合賦值運算子結合了算術與賦值。 它們是執行運算並將結果賦給變數的簡寫。 以下是一些複合賦值運算子的型別:

  • +=:加法並賦值
  • -=:減法並賦值
  • *=:乘法並賦值
  • /=:除法並賦值
  • %=:取餘並賦值
  • &=:按位AND並賦值
  • `|=:按位OR並賦值
  • ^=:按位XOR並賦值

以下是它們的實際應用:

int x = 5;
x += 3; // Equivalent to x = x + 3; x is now 8
int x = 5;
x += 3; // Equivalent to x = x + 3; x is now 8
Dim x As Integer = 5
x += 3 ' Equivalent to x = x + 3; x is now 8
$vbLabelText   $csharpLabel

算術運算子

算術運算子執行標準數學運算。 它們包括:

  • +:加法
  • -:減法
  • *:乘法
  • /:除法
  • %:取餘(除法的餘數)

運算子優先順序

運算子優先順序定義了在表達式中運算的執行順序。 例如,乘法和除法在加法和減法之前執行。

以下是C#中的運算子優先順序:

  1. 邏輯NOT(!)
  2. 乘法性(*,/,%)
  3. 加法性(+,-)
  4. 關係和型別測試(<,>,<=,>=,is,as)
  5. 等式(==,!=)
  6. 邏輯AND(&&)
  7. 邏輯OR(||)

按位運算子

除了操作布林值的邏輯運算子外,一些按位邏輯運算子還操作整數的二進位表示。 按位邏輯運算子的型別有:

  • &:按位AND
  • |:按位OR
  • ^:按位XOR
  • ~:按位NOT
  • <<:左移位
  • >>:右移位

這些按位運算子使您可以操控整數值中的單個位。

Iron Suite: A Powerful Toolkit for C

C#開發的Iron Suite 是一套旨在擴展C#程式設計功能的程式庫集合。 這套卓越的工具可以幫助開發人員執行廣泛的任務,例如文件處理、資料處理和文字識別。 讓我們來看看每個產品如何利用邏輯運算子。

IronPDF

IronPDF使開發者能夠在C#應用中建立、讀取、編輯和轉換PDF文件。 考慮這樣一個場景,您必須根據某些條件過濾並提取PDF中的特定資訊。 可以使用邏輯運算子來定義這些條件,使程式能夠智能地決定提取或操控哪些資料。

發現IronPDF如何增強PDF文件處理

IronXL

IronXL簡化了與Microsoft Excel文件的配合,允許您直接在C#中讀取、寫入和操控電子表格。 您可以利用邏輯運算子來建立動態條件來處理資料。 例如,使用邏輯AND運算子來過濾滿足多個條件的記錄,或使用邏輯OR運算子選擇滿足多個條件的行。

了解如何使用IronXL處理Excel

IronOCR

IronOCR是一個強大的工具,可以讓您的C#應用識別和讀取圖片中的文字。 邏輯運算子可以在提取文字後處理中發揮作用。 想像一個使用案例,您需要驗證提取的資訊。 使用邏輯NOT,AND,OR運算子,您可以建立複雜的驗證規則以確保資料的準確性。

看看IronOCR如何實現文字識別

IronBarcode

IronBarcode增加了在C#應用中生成,讀取和識別條碼的能力。 您可以使用邏輯運算子來決定根據特定條件開發或讀取何種型別的條碼,或根據特定的邏輯規則驗證條碼資料。

了解IronBarcode如何管理條碼操作

結論

邏輯運算子是任何新晉程式員必備的技能,本指南只是C#運算子能做的事情的冰山一角。 借助C#開發的Iron Suite,您可以看到使用邏輯運算子在實際應用中的一些實例。

如果您想練習C#技能,Iron Suite中的每一項產品在開發環境中都可以完全免費使用。 無論您是剛剛開始還是已經是一位C#專家,這些工具都可以幫助您的編碼更上一層樓。

常見問題

什麼是C#中的邏輯運算子,它們如何使用?

C#中的邏輯運算子用於評估布林表達式以便在程式設計中做出決策。它們包括AND (&&)、OR (||)、NOT (!)、和 XOR (^)。這些運算子有助於確定程式碼中條件的真偽,有效地控制程式流程。

如何在C#中使用邏輯運算子來處理PDF文件?

使用IronPDF,邏輯運算子可以定義從PDF檔案中提取特定資料的條件。例如,您可以使用AND (&&)運算子以確保在處理或提取資料之前滿足多個條件。

C#中邏輯AND和邏輯OR運算子有哪些不同?

邏輯AND運算子 (&&) 僅在兩個運算元均為真時返回真,而邏輯OR運算子 (||) 則在至少一個運算元為真時返回真。這些運算子有助於佈建複雜的條件語句。

邏輯NOT運算子如何影響C#中的布林表達式?

邏輯NOT運算子 (!) 反轉布林表達式的值。如果條件為真,則應用NOT運算子將使其為假,反之亦然。這對於反轉條件結果很有用。

邏輯運算子可以和C#中的複合指派運算子結合使用嗎?

是的,邏輯運算子可以和C#中的複合指派運算子結合使用以高效進行運算。複合指派運算子如+=、-=等可以在一步中執行算術運算並賦值。

運算子優先順序如何影響C#中表達式的評估?

運算子優先順序決定了在表達式中執行操作的順序。在C#中,乘法和除法被先於加法和減法評估,而邏輯運算子有其專有的優先順序,這影響了如何解決複雜的表達式。

什麼是XOR運算子,您會在何時使用它於C#中?

XOR運算子 (^) 在C#中如果兩個運算元具有不同的布林值時返回真。它特別適用於需要兩個條件中僅有一個為真的情況,例如切換狀態。

開發者如何通過Iron Suite增強C#檔案處理?

開發者可以利用Iron Suite透過工具如IronPDF用于PDF、IronXL用于Excel文件、IronOCR用于文字識別來增強C#文件處理。這些工具與邏輯運算子一起使用可有效處理資料。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話