在C#中,你可以自己使用布尔谓词作为if语句的参数吗?
例如:
string str = "HELLO";
if (str.Equals("HELLO"))
{
Console.WriteLine("HELLO");
}
此代码输出“HELLO”,还是需要输出:
string str = "HELLO";
if (str.Equals("HELLO") == true)
{
Console.WriteLine("HELLO");
}
如果上述代码段有任何其他问题,请指出。
编辑:按答案加倍等于
答案 0 :(得分:4)
好吧,后一个片段甚至不会编译,因为它试图将 true
分配给str.Equals("Hello")
(你有一个=而不是==)但是之一:
if (str.Equals("HELLO"))
或
if (str.Equals("HELLO") == true)
会奏效。后者非常强烈气馁 - 这很丑陋。
请记住字符串重载==,所以你实际上可以写:
if (str == "HELLO")
这有点简单。
答案 1 :(得分:3)
第二个版本甚至不会编译,因为您需要==
,而不是=
。
看到像if (foo == true)
这样的代码使胆汁升入我的嘴里。
答案 2 :(得分:2)
是的,你可以。
(你的第二个例子需要2 =(即==)才是正确的。)
答案 3 :(得分:2)
您拥有的代码是正确的,if
语句会检查括号内的语句是否为true。
请记住c#中的比较使用== not =,所以它应该是if (x == true)
这可用于其他情况,例如:
bool isACat = true;
if (isACat)
{
}
最好将是或类似的标识符(Is / Has / Should / Will / Do / Must ...)置于布尔变量名之前,因为它使得它易于读取你没有使用== true。
答案 4 :(得分:2)
你可以自己使用布尔谓词作为if语句的参数
严格来说,这个的答案是“不”,因为谓词是函数(在数学意义上)。您可以用于if
中的条件表达式的是任何布尔表达式,包括(如此处)结果调用值的谓词。
要扩展,这里的'谓词'是'等于你好'。它是一个函数(在数学意义上),它对类型string
的值进行操作,并返回布尔值。获得布尔值后(通过将此函数应用于特定字符串str
),您无需将其明确地与true
进行比较:您可以使用它。
正如您将从其他人的答案中看到的那样,将布尔类型的表达式明确地与布尔文字进行比较的代码通常会导致读者的代码风格痛苦:)(我最喜欢的'peeve是<boolean expression> ? true : false
)
答案 5 :(得分:0)
没有错。
只需两种不同的方式来拿起同一个勺子来养活自己;)