||(或)Java与.Net中的逻辑运算符

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 == nulltrue和第二个表达式没有被评估.如果是的话,我会收到一个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)