如何从这行代码中获取空指针异常?
String a = "localUri: "+ mCurrentImageUri == null? "none" : mCurrentImageUri.toString();
mCurrentImageUri == null
,但我认为如果是这样的话,就不会评估mCurrentImageUri.toString()
半相关:
如何编写类似于这个c#语法?
字符串a = myVar?? "none"
答案 0 :(得分:13)
你需要括号:
"localUri: " + (mCurrentImageUri == null ? "none" : mCurrentImageUri.toString())
没有括号,它被解析为(("localUri: "+ mCurrentImageUri) == null) ? ...
,它总是错误的。
答案 1 :(得分:2)
对于Java代码,正如其他人所指出的那样,
你用Java编写的内容相当于:
String a = ("localUri: " + mCurrentImageUri == null ) ? "none" : mCurrentImageUri.toString();
这就是你得到NullPointerException(NPE)的原因。
在C#中你可以做到:
myVar == null ? "none" : myVar.ToString()
语法与Java相似 (在Java中你有toString(),在C#中你有ToString())
在C#中,正如您的建议,您也可以使用
左合并算子。有关详细信息,请点击此处:
答案 2 :(得分:1)
如何从这行代码中获取空指针异常?
如果查看表运算符优先级+
的优先级高于三元运算符,那么首先连接字符串然后它不为空,这样你就进入第二个条件。