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条件已执行