Koe*_*box -3 .net c# java logical-operators
我已经用Java(主要)和.Net编写了一段时间.
我发现||.Net 中的逻辑运算||符与Java中的运算符的结果不同.
让我们看看以下Java代码:
Object obj = null;
if(obj == null || obj.toString().isEmpty()){
System.out.println("Object is null");
}
Run Code Online (Sandbox Code Playgroud)
上面代码的结果将是:
对象为空
原因是因为obj == null是true和第二个表达式没有被评估.如果是的话,我会收到一个java.lang.NullPointerException.
如果我使用单个或(|)我也会收到一个NullPointerException(两者都被评估).
我的问题如下:
如果代码是C#,我将始终获得ObjectReferenceNotSet等异常,因为obj值为null并且始终评估第二个表达式(无论运算符如何),这意味着C#中的结果与Java中的结果不同.如果我想更改C#代码以使其正常工作,我必须创建两个if语句.
在C#中有没有更简单的方法与Java类似?(如果有2个表达式,请将其保留为一个)
谢谢.
Mar*_*ell 15
||C#中的运算符是短路的,就像在Java中一样.原样&&.在|和&运营商都没有短路,就像在Java中.
如果您的结果不同,则代码中存在错误.你能告诉我们违规的C#吗?
这很好用:
object obj = null;
if(obj == null || string.IsNullOrEmpty(obj.ToString())) {
Console.WriteLine("Object is null");
}
Run Code Online (Sandbox Code Playgroud)