在c#中,您说明条件的顺序的执行速度是否有任何差异?
if (null != variable) ...
if (variable != null) ...
Run Code Online (Sandbox Code Playgroud)
从最近开始,我经常看到第一个,因为我习惯了第二个,所以引起了我的注意.
如果没有差异,第一个的优势是什么?
可能重复:
如何检查等于?(0 == i)或(i == 0)
为什么人们经常在C#中看到"null!= variable"而不是"variable!= null"?
我一直在看一个奇怪的教程以及一些DirectX代码,并注意到许多有经验的C++程序员用以下方式编写表达式:
(<constant> == <variable>)
Run Code Online (Sandbox Code Playgroud)
而不是我的传统智慧似乎更喜欢:
(<variable> == <constant>)
Run Code Online (Sandbox Code Playgroud)
例如if (NULL == ptr)而不是if (ptr == NULL).我更喜欢第二种选择,如果没有其他原因选择前者,我的理由是变量似乎是表达式的"接收"端.
但我怀疑前者用于避免无意中通过使用=而不是将变量的值赋给变量==.这是对的吗?
可能重复:
为什么一些有经验的程序员会在变量之前写入比较值?
我只是对此感到好奇:在我研究过的大多数框架/开源项目中,我经常看到这样的代码......
<?php
if (null === self::$_instance) {
self::$_instance = new self();
}
Run Code Online (Sandbox Code Playgroud)
特别是这条线......
if (null === self::$_instance) {
Run Code Online (Sandbox Code Playgroud)
为什么null在if声明的第一个参数中使用而不是相反?...
if (self::$_instance === null) {
Run Code Online (Sandbox Code Playgroud)
我意识到可能没有性能提升或类似的东西.这只是一种偏好还是我忽略了某种编码标准?
我已经看到了这种比较的多个例子,其他一些例子(来自wordpress核心):
if ( '' != $qv['subpost'] )
$qv['attachment'] = $qv['subpost'];
Run Code Online (Sandbox Code Playgroud)
代码高于:
if ( $qv['subpost'] != '' )
$qv['attachment'] = $qv['subpost'];
Run Code Online (Sandbox Code Playgroud)
或者它们的功能不同?