C#中 | 和 || 运算符的区别

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

  • bool_exp1 || bool_exp2

  • bool_exp1 | bool_exp2

  • 现在,1和2的语法看起来很相似,但它们的执行方式完全不同。

  • 在第一条语句中,将执行第一条bool_exp1,然后此表达式的结果决定另一条语句的执行。

  • 如果为true,则OR为true,因此执行另一条语句没有任何意义。

  • 仅当bool_exp1执行返回false时,才会执行bool_exp2语句。

  • 它也被称为短路运算符,因为它根据第一个表达式的结果来短路(语句)。

  • 现在的情况下| 情况有所不同。编译器将执行这两个语句,换句话说,无论一个语句的结果如何,都将执行这两个语句。

  • 这是一种低效的处理方式,因为如果一个语句为true,则执行另一条语句是没有意义的,因为OR的结果仅对评估为“ false”的结果有效,并且当两个语句均为false时也是可能的。

按位逻辑或

示例

using System;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         if(Condition1() || Condition2()){
            Console.WriteLine("执行逻辑或If条件");
         }
         Console.ReadLine();
      }
      static bool Condition1(){
         Console.WriteLine("条件1已执行");
         return true;
      }
      static bool Condition2(){
         Console.WriteLine("条件2已执行");
         return true;
      }
   }
}

输出结果

条件1已执行
执行逻辑或If条件

按位或

示例

using System;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         if(Condition1() | Condition2()){
            Console.WriteLine("逻辑或If条件已执行");
         }
         Console.ReadLine();
      }
      static bool Condition1(){
         Console.WriteLine("条件1已执行");
         return true;
      }
      static bool Condition2(){
         Console.WriteLine("条件2已执行");
         return true;
      }
   }
}

输出结果

条件1已执行
条件2已执行
逻辑或If条件已执行