2012-11-27 85 views
2

有没有推荐的方法检查空,例如(根据.NET框架准则):检查空,== NULL VS = NULL

if (value == null) 
{//code1} 
else 
{//code2} 

if (value != null) 
{//code2} 
else 
{//code1} 

或者这两个代码具有相同的性能?

回答

11

没有性能上的差异,所以你应该努力提高可读性。

例如,在if分支中放置更多“常规”路径并将“特殊”路径放入else分支中通常是一个好主意。

+2

“没有性能差异,所以你应该为可读性编码”---实际上,在第一个地方编写可读代码总是一个好主意:-) – zerkms

+0

@zerkms,好这是一个很好的起点。但是,如果你的分析表面瓶颈,你有时不得不牺牲可读性的祭坛。 –

+1

@Kirk Woll:是的,但只有在你写完美妙的一段代码之后。精心设计的代码更容易改进(从性能角度来看) – zerkms

15

两个选项的表现都相同。

您应该使用哪一个有意义的语义,或者更干净的代码哪一个结果。
例如,如果非空的动作更短,这是有道理的,首先把该块,使else接近if

+0

或者使用'value == null? code1:code2'如果你想!很多方法去皮猫 – Charleh

+0

@Charleh:请不要;-) – zerkms

+0

@zerkms,是因为你鄙视'?'操作符?我认为Charleh的建议没有问题。 –

4

性能没有差异。我个人把更常见的情况放在最上面,在else分支中不太常见的情况,但这只是偏好。这使我更容易看到更常见的情况。

2

没有性能差异。根据您的需要使用它们(可读性/可用性透视图)。 最合适/使用的块进入if,可选/辅助块进入else

0

都是相同的。对于可读性,你可以把在IF代码给出结果为真块。在这种情况下,IF(value!= null)是更好的可读性和明显的:)