当我想检查变量/对象是否为if
以及变量/对象是否满足某些条件时,是否可以避免嵌套null
语句。
var obj = "test";
if (obj != null) {
if (obj.equals("test")) {
//do something;
}
}
是否可以在不定义处理此问题的方法的情况下执行此语句的oneliner?
答案 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
}