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

C# IF语句中的OR运算符是什么,c#,conditional-operator,C#,Conditional Operator,在C#中,如何指定或: if(this OR that) {do the other thing} 我在帮助中找不到它 更新: 我的代码是: if (title == "User greeting" || "User name") {do stuff} if (title == "User greeting" || "User name") {do stuff}; 我的错误是: 错误1运算符“| |”不能应用于“bool”和“string”类型的操作数C:\Documents and Se

在C#中,如何指定或:

if(this OR that) {do the other thing}
我在帮助中找不到它

更新:

我的代码是:

if (title == "User greeting" || "User name") {do stuff}
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

或者是||

而且是&&

更改问题的更新:

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

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

OR运算符是一个双管:

||
所以它看起来像:

if (this || that) 
{
  //do the other thing
}
EDIT:更新的尝试不起作用的原因是逻辑运算符必须分隔有效的C#表达式。表达式有操作数和运算符,运算符有优先顺序

在本例中,首先计算==运算符。这意味着您的表达式的计算结果为
(title==“用户问候语”)| |“用户名”
。接下来对| |进行求值。因为| |要求每个操作数都是布尔表达式,所以它失败了,因为操作数是字符串

使用两个单独的布尔表达式将确保
|
运算符正常工作

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

条件or运算符为| |:

if (expr1 || expr2) {do stuff}

if (title == "User greeting" || title == "User name") {do stuff}
条件(OR)及其部分是布尔表达式

MSDN在此处按优先顺序列出了C#运算符。布尔表达式的MSDN页面是


如果您刚刚开始学习编程,您应该阅读介绍性文本或教程中的条件语句。这一部分似乎涵盖了大部分基本知识:.

请参见C中的条件OR运算符,包括或是
|
|
是C中的条件OR运算符#

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

C#操作符的定义

我的代码是:

if (title == "User greeting" || "User name") {do stuff}
if (title == "User greeting" || "User name") {do stuff};
我的错误是:

错误1运算符“| |”不能为空 应用于“bool”类型的操作数和 “字符串”C:\Documents and Settings\Sky 查看仓库\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};
这样我就可以控制优先级,而不必担心操作顺序。这可能有些过分,但当逻辑变得复杂时,它特别有用。

您需要

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

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

ECMA C#语言规范的参考是

根据规范:

3操作x | | y对应于 操作x | y,除了y是 仅当x为false时计算

|
版本中,对两侧进行评估

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

if (x == null || x.Value == 5)
    // Do something 
或者(没有双关语)使用您的示例:

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

这是错误的原因:

if (title == "User greeting" || "User name") {do stuff};
因为这句话的意思是

如果标题等于字符串“用户问候语”

或者仅仅是“用户名”(如果标题等于字符串“用户名”,则不是)。在你的或后面的部分就像是写作

if ("User name")
这c#不知道该怎么办。它不知道如何从if格式的“用户名”中获取布尔值

if (this OR that) 
这个
和那个是表达式而不是值
title==“aaaaa”
是有效的表达式。另外,
在C#中不是有效的构造,您必须使用
|
或用作“| |”

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

了解更多信息

所以你的代码

if(title==“用户问候语”| |“用户名”){do stuff}
。。。可以直接写为:

if(标题是“用户问候语”或“用户名”){do stuff}

这并不违法;)。但是,是的,这是多余的。@ChrisF-考虑到他在发布12分钟后更新了它,我还没有机会看到它。==在C中的优先级高于| | |,这意味着它将表达式计算为(title==“User greeting”)|“User name”,这是bool | | string。如果它按照您的建议进行计算,那么错误将是“CS0019:运算符“| |”不能应用于“string”和“string”类型的操作数”真的很有趣,我所见过的每个程序员(包括我自己)都认为这是有效的方法。为您写更多的if语句干杯。:-)@Dested:+1表示注意到了这个常见的假设。直到我读了你的评论,我才记得因为同样的困惑,我花了两天的时间对着我的第一个javascript大喊大叫。似乎有这么多其他异常处理程序和松散语言,这个非常合乎逻辑的假设现在已经进入了框架。我想知道这是否是因为在英语中,我们说,“如果你的成绩是a或B,你做得很好”,而不是“如果你的成绩是”