NullReferenceException更改语句中的逻辑

时间:2017-06-07 15:00:54

标签: c# nullreferenceexception logical-operators

我有以下代码。

(!string.IsNullOrEmpty(billInfo.BillingMethod) || (!billInfo.BillingMethod.Equals(bill) && bill != null)

我知道我得到一个空引用异常,因为它很可能比较equals方法中的null值。但是我对如何更改逻辑感到困惑,所以我仍然在不使用方法的情况下得到相同的结果。

2 个答案:

答案 0 :(得分:0)

您需要检查可能为null的所有内容。我只是假设billInfo也可以为null。此外,陈述的顺序很重要。

127.0.0.1 localhost

答案 1 :(得分:0)

如果NullReferenceExceptionbillInfo为空,则可能会发生{p> BillingMethod。因此,首先检查billInfo不等于null,然后检查其他条件。此外,||之后的条件是另一种方式。因为如果第一个语句失败,没有必要检查不为空。

请改为尝试:

 if(billInfo != null && (!string.IsNullOrEmpty(billInfo.BillingMethod) ||
                        (bill != null && !billInfo.BillingMethod.Equals(bill)))
 {
      // Your code here
 }