4

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

我发现了很多条件,比如

if (true == variablename) {...}

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

if (variablename) {...}

反而。令我恼火的是条件左侧的真实情况。它会在右边吗?我只是希望同事在布尔条件下不先进。

在开始时设置 true 是否有任何性能差异或类似的东西?

4

3 回答 3

11

这可能是学习 C/C++ 的遗留问题,通常会被这个 bug 咬伤:

if (variablename = true) { ... }

在对编译器进行调整以对此发出警告之前(请注意,它执行的是赋值,而不是比较),上面的代码在静默执行时出现了一个错误。

但是,如果你学会了反过来写表达式,你就不会被上面的代码咬住,因为它不会以这种形式编译:

if (true = variablename) { ... }

但是,在 C# 中,这不是问题,您可以像显示的那样编写它而不进行比较(只要它true无论如何都比较),或者将文字放在比较运算符的右侧。

于 2013-06-27T16:01:15.003 回答
4

不,没有任何区别,它只是一种代码风格。那是。

我唯一想到的是:

如果variablename变为Nullable 类型(由于一些重构、键入错误或其他原因),此代码仍将按预期编译和工作。

相反,如果你这样写:

if (variablename) {...}

您将收到编译时错误,因此您将被迫更改代码。

于 2013-06-27T15:59:02.700 回答
2

在开始时设置 true 是否有任何性能差异或类似的东西?

我认为对于许多具有 C++ 背景的人来说,一开始就拥有 true 是很常见的;通过放置if(b = true)而不是分配值很容易if(b==true);而你不能这样做if(true = b)

于 2013-06-27T16:01:40.487 回答