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
广告