IF语句中的OR运算符是什么

时间:2010-01-28 22:44:36

标签: c#

在C#中,如何指定OR:

if(this OR that) {do the other thing}

我在帮助中找不到它。

更新

我的代码是:

if (title == "User greeting" || "User name") {do stuff}

我的错误是:

  

错误1运营商'||'不能应用于'bool'和'string'类型的操作数C:\ Documents and Settings \ Sky View Barns \ My Documents \ Visual Studio 2005 \ Projects \ FOL Ministry \ FOL Ministry \ Downloader.cs 63 21 FOL Ministry

12 个答案:

答案 0 :(得分:69)

||是C#

中的条件OR运算符

你可能很难找到它,因为很难找到你不知道名字的东西。下次尝试在Google上搜索“C#Operators”并查看逻辑运算符。

Here is a list C#运算符。

  

我的代码是:

if (title == "User greeting" || "User name") {do stuff};
     

我的错误是:

     

错误1运营商'||'不可能是   应用于'bool'类型的操作数   'string'C:\ Documents and Settings \ Sky   查看Barns \ My Documents \ Visual Studio   2005 \ Projects \ FOL Ministry \ FOL   Ministry \ Downloader.cs 63 21 FOL   部

你需要这样做:

if (title == "User greeting" || title == "User name") {do stuff};

OR运算符以相同的方式计算两侧的表达式。在您的示例中,您正在使用表达式title == "User greeting"(bool)和表达式"User name"(字符串)。如果没有强制转换或转换,这些就无法直接组合,这就是您收到错误的原因。

此外,值得注意的是||运算符使用“短路评估”。这意味着如果第一个表达式求值为true,则不评估第二个表达式,因为它不必是 - 最终结果将始终为true。有时您可以在优化过程中利用这一点。

最后一个快速注释 - 我经常使用嵌套括号编写我的条件:

if ((title == "User greeting") || (title == "User name")) {do stuff};

这样我可以控制优先级,而不必担心操作的顺序。这可能有点过头了,但是当逻辑变得复杂时它尤其有用。

答案 1 :(得分:10)

OR运算符是双管道:

||

所以看起来像:

if (this || that) 
{
  //do the other thing
}

编辑:更新后的尝试无效的原因是逻辑运算符必须分隔有效的C#表达式。表达式具有操作数,运算符和运算符具有优先顺序。

在您的情况下,首先评估 == 运算符。这意味着您的表达式被评估为(title == "User greeting") || "User name"。 ||接下来评估。自||要求每个操作数都是一个布尔表达式,它会失败,因为你的操作数是字符串。

使用两个单独的布尔表达式可确保您的||运算符正常运行。

title == "User greeting" || title == "User name"

答案 2 :(得分:8)

你需要

if (title == "User greeting" || title == "User name") {do stuff};

答案 3 :(得分:7)

为了完整,||和&&是|的条件版本和&运算符。

对ECMA C#语言规范的引用是here

来自规范:

  

3操作x || y对应于   操作x | y,除了y是   仅在x为假的情况下进行评估。

|版本中评估双方。

条件版本短路评估,因此允许代码如下:

if (x == null || x.Value == 5)
    // Do something 

或者(没有双关语)使用你的例子:

if (title == "User greeting" || title == "User name") 
    // {do stuff} 

答案 4 :(得分:5)

或者是||

并且是&&

更新已更改的问题:

您需要在if语句的每个逻辑部分中指定要比较的内容。

if (title == "User greeting" || title == "User name") 
{
    // do stuff
}

答案 5 :(得分:5)

条件或运算符是||:

if (expr1 || expr2) {do stuff}

if (title == "User greeting" || title == "User name") {do stuff}

条件(OR)及其部分是布尔表达式。

MSDN在此处按优先顺序列出C#运算符http://msdn.microsoft.com/en-us/library/6a71f45d.aspx布尔表达式的MSDN页面为http://msdn.microsoft.com/en-us/library/dya2szfk.aspx

如果您刚刚开始学习编程,则应该从介绍性文本或教程中阅读条件语句。这个似乎涵盖了大部分基础知识:http://www.functionx.com/csharp/Lesson10.htm

答案 6 :(得分:3)

请参阅C# Operators了解C#运算符,包括OR ||

答案 7 :(得分:2)

这是错误的原因:

if (title == "User greeting" || "User name") {do stuff};

是因为那句话是

如果title等于字符串“User greeting”

或只是“用户名”(如果title等于字符串“User name”)。在您之后或将要写的部分

if ("User name")

哪个c#不知道该怎么做。它无法弄清楚如何从“用户名”中获取布尔值

答案 8 :(得分:1)

希望你现在有了一个想法。如果你有兴趣,你也可以看看 c#规范在 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf

答案 9 :(得分:0)

以if

的格式
if (this OR that) 

thisthat表达式不是值。 title == "aaaaa"是一个有效的表达式。另外OR不是C#中的有效构造,您必须使用||

答案 10 :(得分:0)

OR用作" ||"

 if(expr1 || expr2)
 {
    do something
 }

答案 11 :(得分:0)

在 C#9 中,我们现在可以使用模式组合符“or”、“and”和“not”作为“is”条件检查中的运算符。

See this 了解更多信息。

所以你的代码......

if (title == "User greeting" || "User name") {do stuff}

... 可以直接写成:

if(title is "User greeting" or "User name") {do stuff}