跳至页脚内容
.NET 帮助

C# 逻辑运算符(开发者如何使用)

在编程中,理解逻辑运算符是处理条件语句时必不可少的。 从异或到算术运算,它们在确定给定条件的真值方面起着至关重要的作用。

本指南将引导您了解 C# 中逻辑运算符的基础知识,包括布尔值、运算符优先级、逻辑否定等概念。

什么是逻辑运算符?

逻辑运算符,通常称为逻辑操作,是编程中决策的核心。 它们对布尔表达式进行操作,评估它们并根据所提供的条件生成布尔值,结果为真或假。 这些运算符在控制程序的流向中起着关键作用,使您能够根据某些条件执行特定的代码块。

下面,我们将深入了解C#中的不同逻辑运算符,理解它们的功能,并展示如何将逻辑运算符精确高效地合并进应用程序中以执行逻辑操作。

C#中的逻辑运算符类型

逻辑与运算符(&&)

逻辑与运算符(&&)将两个布尔表达式组合,如果两者都为真,则返回真。 如果其中一个或两个为假,则结果为假。 通常用于多条件场景中,所有条件都必须满足。 例如,验证用户的年龄是否足够,并且余额是否足够购买。

&& 运算符:

  • 评估左操作数
  • 如果左操作数为假,则整个表达式为假
  • 如果左操作数为真,则评估右操作数
  • 如果两个操作数都是真,则表达式为真

如果左操作数为假,则不评估右操作数,因为整个表达式肯定为假。

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

在这个例子中,即使isAdult为真,hasBalance为假,所以结果是假的。

逻辑或运算符 (

逻辑或运算符 (||) 将两个布尔表达式组合,只要其中一个为真,即返回真。 如果两者都为假,则结果为假。 非常适合于至少一个条件必须为真的场景。 例如,如一个人是会员或有票就允许入场。

|| 运算符:

  • 评估左操作数
  • 如果左操作数为真,整个表达式为真
  • 如果左操作数为假,则评估右操作数
  • 如果其中一个操作数为真,则表达式为真

如果左操作数为真,则不评估右操作数,因为整个表达式保证为真。

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

这里,由于isMember为真,hasTicket甚至都不评估,结果为真。

逻辑非运算符(!)

逻辑非运算符(!)颠倒布尔表达式的值。 如果操作数为真,结果为假,反之亦然。 通常用于反转条件。 例如,如果某个功能被启用,您可能会使用非运算符来确定它是否应该被禁用。

其工作原理如下:

  • 评估操作数。
  • 如果操作数为真,结果为假。
  • 如果操作数为假,结果为真。
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为假,逻辑非运算符返回真。

与其他运算符组合

非运算符可以与与和或运算符组合以创建更复杂的条件。

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

逻辑异或运算符(^)

逻辑异或运算符(^)在两个操作数的值不同的情况下返回真。 如果两者相同,则返回假。 当您希望确保恰好两个条件中的一个为真,但不是同时为真时,这个运算符特别有用。

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

由于hasPasswordhasSmartCard的值不同,逻辑异或返回真。 如果两者都为真或都为假,它将返回假。

其他相关运算符

复合赋值运算符

复合赋值运算符将算术与赋值结合。 它们是执行运算并将结果赋值给变量的简写。 以下是一些类型的复合赋值运算符:

  • +=:加并赋值
  • -=:减并赋值
  • *=:乘并赋值
  • /=:除并赋值
  • %=:取模并赋值
  • &=:按位与并赋值
  • |:按位或并赋值
  • ^=:按位异或并赋值

以下是它们的实际使用:

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. 逻辑非 (!)
  2. 乘法性 (*, /, %)
  3. 加法性 (+, -)
  4. 关系和类型测试 (<, >, <=, >=, is, as)
  5. 相等性 (==, !=)
  6. 逻辑与 (&&)
  7. 逻辑或 (||)

按位运算符

除了对布尔值进行的逻辑运算符操作之外,还有一些按位逻辑运算符对整数的二进制表示进行操作。 按位逻辑运算符的类型有:

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位非
  • <<:左移
  • >>:右移

这些按位运算符使您能够操作整数值内的各个位。

Iron Suite:一个强大的C#工具包

Iron Suite for C# Development是一个为扩展C#编程功能而定制的库集合。 这一组出色的工具可以协助开发人员完成广泛的任务,如文档处理、数据处理和文本识别。 让我们来探讨一下每个产品如何利用逻辑运算符。

IronPDF。

IronPDF使得开发人员能够在C#应用程序中创建、读取、编辑和转换PDF文档。 想象一个必须基于某些条件过滤和提取PDF中特定信息的场景。 逻辑运算符可用于定义这些条件,使程序能够智能地决定应该提取或操作哪些数据。

发现IronPDF如何增强PDF文档处理

了解更多关于 IronXL 是一个 Excel 库,可帮助处理 Excel 文件而无需安装 Excel。

IronXL简化了与Microsoft Excel文件的工作,使您能够在C#中直接读取、写入和操作电子表格。 可以利用逻辑运算符在处理数据时创建动态条件。 例如,使用逻辑与运算符来过滤满足多个条件的记录或使用逻辑或运算符来选择满足多个条件的行。

了解如何使用IronXL处理Excel

光学字符识别 (OCR) 是一种将不同类型的文档转换为可编辑和可搜索数据的技术。

IronOCR是一种强大的工具,使您的C#应用程序能够识别并读取图像中的文本。 逻辑运算符可以在提取文本后处理中发挥作用。 想象一个您需要验证提取信息的用例。 使用逻辑非、逻辑与和逻辑或运算符,您可以创建复杂的验证规则以确保数据的准确性。

看看IronOCR如何实现光学字符识别

开始使用 IronBarcode 是一个专为 .NET 框架设计的条码读取和写入库。

IronBarcode为C#应用程序增加了生成、读取和识别条形码的能力。 您可以使用逻辑运算符来确定根据特定条件开发或读取何种类型的条形码,或根据某些逻辑规则来验证条形码数据。

了解IronBarcode如何管理条形码操作

结论

逻辑运算符是任何初学程序员必须掌握的技能,这个指南只是C#运算符能做什么的冰山一角。 借助Iron Suite for C# Development,您可以看到使用逻辑运算符在现实应用中的一些实际例子。

如果您希望练习您的C#技能,Iron Suite中的每个产品在开发环境中都可以免费使用。 无论您是刚刚入门还是已经是C#的行家,这些工具都能帮助您将编码提升到下一个水平。

常见问题解答

C# 中的逻辑运算符是什么及其用法如何?

C# 中的逻辑运算符用于评估布尔表达式以做出编程决策。它们包括与 (&&)、或 (||)、非 (!) 和异或 (^)。这些运算符有助于确定代码中条件的真假,从而实现对程序流程的有效控制。

如何在 C# 中使用逻辑运算符以处理 PDF 文档?

使用 IronPDF,逻辑运算符可以定义从 PDF 文件中提取特定数据的条件。例如,您可以使用与 (&&) 运算符以确保在处理或提取数据之前满足多个条件。

C# 中的逻辑与运算符与逻辑或运算符有何区别?

逻辑与运算符 (&&) 仅在两个操作数都为真时返回真,而逻辑或运算符 (||) 如果至少一个操作数为真则返回真。这些运算符帮助构建 C# 中的复杂条件语句。

逻辑非运算符如何影响 C# 中的布尔表达式?

逻辑非运算符 (!) 翻转布尔表达式的值。如果条件为真,应用非运算符将使其为假,反之亦然。这对于反转条件的结果非常有用。

逻辑运算符可以与 C# 中的复合赋值运算符结合使用吗?

是的,逻辑运算符可以与 C# 中的复合赋值运算符结合使用,以高效地执行操作。复合赋值运算符如 +=, -= 和其他能够在一步中执行算术操作并分配结果。

运算符优先级如何影响 C# 中表达式的求值?

运算符优先级决定了在表达式中执行操作的顺序。在 C# 中,乘法和除法的优先级高于加法和减法,逻辑运算符有自己的优先级级别,这会影响复杂表达式的解析方式。

什么是异或运算符,何时在 C# 中使用它?

C# 中的异或运算符 (^) 如果两个操作数具有不同的布尔值则返回真。它对于需要恰有一个条件为真的场景特别有用,例如切换状态。

开发人员如何利用 Iron Suite 增强 C# 文档处理?

开发人员可以利用 Iron Suite 来增强 C# 文档处理,使用如 IronPDF 处理 PDFs, IronXL 处理 Excel 文件,和 IronOCR 进行文本识别。这些工具与逻辑运算符集成以高效处理数据。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。