如果为null和参数条件,请避免嵌套

时间:2016-10-20 07:59:20

标签: java c#

当我想检查变量/对象是否为if以及变量/对象是否满足某些条件时,是否可以避免嵌套null语句。

var obj = "test";
if (obj != null) {
   if (obj.equals("test")) {
      //do something;
   }
}

是否可以在不定义处理此问题的方法的情况下执行此语句的oneliner?

6 个答案:

答案 0 :(得分:4)

你也可以尝试(用Java)

"test".equals(obj)
这样,您就不必进行明确的空检查,

答案 1 :(得分:2)

您可以使用空条件运算符?和空合并运算符??

if(obj?.Equals("test") ?? false)
{
   // do something
}

如果obj?.Equals("test")null,则obj返回null,如果值为??,则false??分配给if语句1}}是null

但遗憾的是,这只适用于C#,而不适用于Java。 Java只知道条件运算符?,但不知道空合并运算符??is there a Java equivalent to null coalescing operator (??) in C#?)。

答案 2 :(得分:1)

我建议你熟悉conditional statements

的短路

如果您使用&&呼叫您的条件如下:

if (obj != null && obj.Equals("test"))
{
    //do something;
}

您不会得到异常,因为如果obj == null它将在第一个参数上返回false,并且不会检查&&语句的第二个参数。

||中实现了相同的逻辑 - 如果第一个参数是true,则不会检查另一个参数。

java中也实施了短路,因此您可以在if&&中将嵌套c#实现为java运算符的序列

答案 3 :(得分:0)

使用逻辑&&代替嵌套if。只有当第一个条件为真时,&&才会评估第二个条件(与嵌套的情况相同)。因此,obj.equals("test")仅在第一个条件为真时才会被评估,即{,{1}}

obj!=null

答案 4 :(得分:0)

是的,你可以。

但是检查null应该是 first ,然后如果你的对象是 null 它会破坏:

ClassWithAddress

答案 5 :(得分:0)

运营商&&可以允许你这样做。

if(obj!=null && obj.equals("test")){
    //do something
}