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


|| 称为**逻辑或**运算符,而 | 称为**按位逻辑或**运算符,但它们之间最基本的区别在于执行方式。|| 和 | 的语法如下所示:

  • bool_exp1 || bool_exp2
  • bool_exp1 | bool_exp2
  • 现在,1 和 2 的语法看起来很相似,但它们的执行方式完全不同。
  • 在第一个语句中,首先执行 bool_exp1,然后根据该表达式的结果决定是否执行另一个语句。
  • 如果它是真,则或运算结果为真,因此执行另一个语句毫无意义。
  • 只有当 bool_exp1 执行后返回假时,才会执行 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

更新于: 2020-09-24

780 次查看

开启你的职业生涯

通过完成课程获得认证

立即开始
广告