繁体   English   中英

C#:可以将布尔谓词用作if语句的参数吗?

[英]c#: can you use a boolean predicate as the parameter to an if statement?

在C#中,您可以单独使用布尔谓词作为if语句的参数吗?

例如:

string str = "HELLO";
if (str.Equals("HELLO"))
{
    Console.WriteLine("HELLO");
}

该代码将输出“ HELLO”,还是需要:

string str = "HELLO";
if (str.Equals("HELLO") == true)
{
    Console.WriteLine("HELLO");
}

如果上述代码段还有其他问题,请指出。

编辑:每个答案等于

好吧,后面的代码片段甚至不会编译,因为它试图 true str.Equals("Hello") (您只有一个=而不是==),但是其中一个:

if (str.Equals("HELLO"))

要么

if (str.Equals("HELLO") == true)

将工作。 强烈建议不要使用后者-十分难看。

请记住,字符串重载==,因此您可以实际编写:

if (str == "HELLO")

这有点简单。

第二个版本甚至都不会编译,因为您需要== ,而不是=

看到类似if (foo == true)代码会使胆汁升到我的嘴里。

是的你可以。

(您的第二个示例需要2 =(即==)是正确的)。

您拥有的代码是正确的, if语句检查括号内的语句是否为true。

请记住,c#中的比较使用== not =,因此应该是if (x == true)

这可以用于其他情况,例如:

bool isACat = true;

if (isACat)
{
}

最好在布尔变量名称前放置is或类似的标识符(Is / Has / Should / Will / Do / Must ...),因为当您不使用== true时,它易于阅读。

您可以单独使用布尔谓词作为if语句的参数吗

严格来说, 这个问题的答案是“不”,因为谓词是一个函数 (在数学意义上)。 可以使用在条件表达式if是任何布尔表达式 ,包括(这里)上值的谓词的调用的结果

为了扩展,这里的“谓词”是“等于HELLO”。 它是一个对string类型的值进行操作并返回布尔值的函数(从数学意义上来说)。 一旦获得了布尔值(通过将该函数应用于特定字符串str ),就无需将其显式比较为true :您可以使用它。

从其他人的答案中可以看出,将布尔类型的表达式与布尔文字进行显式比较的代码通常会引起读者的代码风格痛苦:)(我最喜欢的方式是<boolean expression> ? true : false ) 。

没错

只是用两种不同的方式来捡起同一汤匙来养活自己;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM