C# 中 | 和 || 运算符有什么区别?

csharpserver side programmingprogramming更新于 2025/9/30 15:07:17

|| 被称为逻辑或运算符,而 | 被称为按位逻辑或,但它们之间的基本区别在于执行方式。|| 和 | 的语法与以下 − 相同。

  • bool_exp1 || bool_exp2
  • bool_exp1 | bool_exp2
  • 现在,1 和 2 的语法看起来彼此相似,但它们的执行方式完全不同。
  • 在第一个语句中,首先执行 bool_exp1,然后该表达式的结果决定另一个语句的执行。
  • 如果它为真,则 OR 运算也将为真,因此执行另一个语句毫无意义。
  • 当且仅当 bool_exp1 在执行时返回 false 时,才会执行 bool_exp2 语句。
  • 它也被称为短路运算符,因为它根据第一个表达式的结果将电路(语句)短路。
  • 现在,对于 | 的情况有所不同。编译器将执行这两个语句,换句话说,无论其中一个语句的结果如何,两个语句都会执行。
  • 这是一种低效的做法,因为如果一个语句为真,则执行另一个语句毫无意义,因为"或"的结果仅对结果为"假"的情况有效,而当两个语句都为假时,才有可能执行。

逻辑"或"

示例

using System;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         if(Condition1() || Condition2()){
            Console.WriteLine("Logical OR If Condition Executed");
         }
         Console.ReadLine();
      }
      static bool Condition1(){
         Console.WriteLine("Condition 1 executed");
         return true;
      }
      static bool Condition2(){
         Console.WriteLine("Condition 2 executed");
         return true;
      }
   }
}

输出

Condition 1 executed
Logical OR If Condition Executed

按位逻辑或

示例

using System;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         if(Condition1() | Condition2()){
            Console.WriteLine("Logical OR If Condition Executed");
         }
         Console.ReadLine();
      }
      static bool Condition1(){
         Console.WriteLine("Condition 1 executed");
         return true;
      }
      static bool Condition2(){
         Console.WriteLine("Condition 2 executed");
         return true;
      }
   }
}

输出

Condition 1 executed
Condition 2 executed
Logical OR If Condition Executed

相关文章