关于true ==的特别之处?

时间:2013-06-27 15:58:10

标签: c# syntax

我目前不得不为同事做一些假期替换,并且必须改变他的一些代码。

我发现了很多像

这样的条件
if (true == variablename) {...}

我只是想知道这个语法有什么特别之处吗?像我们大多数人一样,我只会写

if (variablename) {...}

代替。令我恼火的是病情左侧的真实情况。它是否在右侧我会期望同事在布尔条件下没有进展。

是否有任何表现差异或类似的东西,在开头就是真的?

3 个答案:

答案 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)

做同样的事情