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