在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
答案 0 :(得分:69)
||
是C#
你可能很难找到它,因为很难找到你不知道名字的东西。下次尝试在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)
答案 9 :(得分:0)
以if
的格式if (this OR that)
this
和that
表达式不是值。 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}