我目前不得不为同事做一些假期替换,并且必须改变他的一些代码。
我发现了很多像
这样的条件if (true == variablename) {...}
我只是想知道这个语法有什么特别之处吗?像我们大多数人一样,我只会写
if (variablename) {...}
代替。令我恼火的是病情左侧的真实情况。它是否在右侧我会期望同事在布尔条件下没有进展。
是否有任何表现差异或类似的东西,在开头就是真的?
答案 0 :(得分:11)
这可能是学习C / C ++的遗留问题,在这种情况下,通常会被这个错误所困扰:
if (variablename = true) { ... }
在编译器调整为警告之前(注意它做了一个赋值,而不是比较),上面的代码默默地执行了一个bug。
但是,如果你学会了反过来编写表达式,你就不会被上面的代码所困扰,因为它不会以这种形式编译:
if (true = variablename) { ... }
然而,在C#中,它不是一个问题,你可以像没有比较的那样编写它(只要它与true
进行比较),或者将文字放在右侧。比较运算符。
答案 1 :(得分:4)
没有任何区别,它只是一种代码风格。就是这样。
我唯一想到的是:
如果variablename
变为Nullable type(由于某些重构,输入错误或其他任何原因),此代码仍将按预期编译并运行。
相反,如果你这样写:
if (variablename) {...}
您将收到编译时错误,因此您将强制更改代码。
答案 2 :(得分:2)
是否有任何性能差异或类似的东西在开始时设置为真?
我认为对于许多具有C ++背景的人来说,开始时的真实性是很常见的;通过放置if(b = true)
而不是if(b==true)
来分配值很容易;而你不能对if(true = b)