C#中的双重问题#

Gat*_*ler 3 c# if-statement

我经常发现自己编写类似的代码,如下例所示:

if (object["Object Name"] != null) {
    if (object["Object Name"] == "Some Value") {
        // Do Statement A
    } else {
        // Do Statement B
    }
} else {
    // Do Statement B
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我检查一个对象是否为null然后我可以检查它的实际内容.

"语句B"始终相同,在我的情况下通常是SQL语句.

必须有更好的解决方法吗?

谢谢
Stephen

kem*_*002 23

C#中存在短路,因此您可以执行以下操作:

if(null != object && object.name == foo)
  do A
else
  do B
Run Code Online (Sandbox Code Playgroud)

C#总是首先计算条件语句中的第一个表达式,如果失败,它不会在语句的那一部分中尝试任何其他表达式.

为了进一步这一点,如果你要在条件语句昂贵的操作与一个或多个廉价的操作一起,这是很好的把它在结束时,如果可能的话,那么它只会检查昂贵的操作时,它确实需要.所以像

if(trivial comparison && trivial comparison && REALLY EXPENSIVE OPERATION)
Run Code Online (Sandbox Code Playgroud)

它现在只会作为最后的手段执行昂贵的操作.

  • 它在VB.net中不起作用,但你必须使用AndAlso或类似的东西.切换语言时要小心,它们是微妙的,根本的区别:D (2认同)