可能重复:
== Operator and operands可能重复:
Is there any difference between if(a==5) or if(5==a) in C#?
== Operator and operands
好的,这可能是一个愚蠢的问题,但在谷歌搜索(似乎无法搜索一个确切的短语,即使有引号)
如果
之间存在任何差异,该怎么办? if(false == <somecondition>){
和
if(<somecondition> == false){
?我熟悉c#的表达式评估,并了解如果您执行以下操作,顺序将如何有意义:
if(AccountIsInvalid || AccountIsUnregistered)
我不需要上一堂课,但想了解为什么有些人喜欢用false==....
路线做事。
答案 0 :(得分:3)
就个人而言,我从未将任何事情与虚假或真实进行比较。
我会选择:
if (!somecondition)
或:
if (somecondition)
答案 1 :(得分:3)
在C中可能有一些理由这样做,因为你很容易犯错并使用赋值运算符而不是比较运算符,但在C#中它应该没有任何区别 - 你会如果使用赋值运算符,则会收到编译警告。如果赋值是一个不同的类型(比如int),则会导致错误,因为结果不是if语句的合法表达式。
我希望它是
if (!<somecondition>)
{
...
}
而不是与false的比较(或者就此而言是真实的。)
答案 2 :(得分:1)
在执行任何优化或短路之前,编译器需要将<somecondition>
解析为true
或false
值,因此编译器没有理由评估表达式{{ 1}}和<somecondition> == false
任何不同。
这肯定是风格和风格的问题。
答案 3 :(得分:0)
这与C / c ++中的C#无关,因为条件必须求值为布尔值。