ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# || 运算符(C# 参考) 条件或运算符 (**||**) 执行的逻辑或其 **bool** 操作数。如果第一个操作数计算结果为 **true**,第二个操作数对象不会计算。如果第一个操作数计算结果为 **false**,第二个运算符确定或表达式整体是否计算结果为 **true** 或 **false**。 ## 备注 操作 ``` x || y ``` 对应于操作 ``` x | y ``` 但,如果 x 是 **true**,y 不会计算无论 y,的值,因为或操作是 **true**。此概念称为“短路计算”。 条件或运算符无法重载,但是,公共逻辑运算符和 [真](https://msdn.microsoft.com/zh-CN/library/eahhcxk2.aspx) 和 [假](https://msdn.microsoft.com/zh-CN/library/67bxt5ee.aspx) 运算符的重载,有一些限制的,也将条件逻辑运算符的重载。 在下面的示例中,表达式中使用的 **||** 计算只有第一个操作数。使用的表达式**|**计算两个操作数。在第二个示例中,因此,如果两个操作数计算,则运行时会发生异常。 ``` class ConditionalOr { // Method1 returns true. static bool Method1() { Console.WriteLine("Method1 called."); return true; } // Method2 returns false. static bool Method2() { Console.WriteLine("Method2 called."); return false; } static bool Divisible(int number, int divisor) { // If the OR expression uses ||, the division is not attempted // when the divisor equals 0. return !(divisor == 0 || number % divisor != 0); // If the OR expression uses |, the division is attempted when // the divisor equals 0, and causes a divide-by-zero exception. // Replace the return statement with the following line to // see the exception. //return !(divisor == 0 | number % divisor != 0); } static void Main() { // Example #1 uses Method1 and Method2 to demonstrate // short-circuit evaluation. Console.WriteLine("Regular OR:"); // The | operator evaluates both operands, even though after // Method1 returns true, you know that the OR expression is // true. Console.WriteLine("Result is {0}.\n", Method1() | Method2()); Console.WriteLine("Short-circuit OR:"); // Method2 is not called, because Method1 returns true. Console.WriteLine("Result is {0}.\n", Method1() || Method2()); // In Example #2, method Divisible returns True if the // first argument is evenly divisible by the second, and False // otherwise. Using the | operator instead of the || operator // causes a divide-by-zero exception. // The following line displays True, because 42 is evenly // divisible by 7. Console.WriteLine("Divisible returns {0}.", Divisible(42, 7)); // The following line displays False, because 42 is not evenly // divisible by 5. Console.WriteLine("Divisible returns {0}.", Divisible(42, 5)); // The following line displays False when method Divisible // uses ||, because you cannot divide by 0. // If method Divisible uses | instead of ||, this line // causes an exception. Console.WriteLine("Divisible returns {0}.", Divisible(42, 0)); } } /* Output: Regular OR: Method1 called. Method2 called. Result is True. Short-circuit OR: Method1 called. Result is True. Divisible returns True. Divisible returns False. Divisible returns False. */ ``` ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [C# 运算符](https://msdn.microsoft.com/zh-CN/library/6a71f45d.aspx)