C# 中 | 和 || 运算符有什么区别?
csharpserver side programmingprogramming更新于 2025/9/30 15:07:17
|| 被称为逻辑或运算符,而 | 被称为按位逻辑或,但它们之间的基本区别在于执行方式。|| 和 | 的语法与以下 − 相同。
- bool_exp1 || bool_exp2
- bool_exp1 | bool_exp2
- 现在,1 和 2 的语法看起来彼此相似,但它们的执行方式完全不同。
- 在第一个语句中,首先执行 bool_exp1,然后该表达式的结果决定另一个语句的执行。
- 如果它为真,则 OR 运算也将为真,因此执行另一个语句毫无意义。
- 当且仅当 bool_exp1 在执行时返回 false 时,才会执行 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

