检查对象属性是否为null

时间:2017-06-24 18:05:03

标签: c#

我有一个从外部系统获取对象的类。我想验证我的参数是否正确。即使我向服务发送了错误的值,我的对象似乎也不是null。基本上我想检查mySalesOrderHeader是否包含有效的订单号。

例如,if (mySalesOrderHeader != null) { Do My Stuff}我从系统中检索mySalesOrderHeader后检查此情况。在我的if condition[Where {Do My Stuff}]里面,我正在访问它的属性并检查它的存在。

if(string.IsNullOrEmpty(mySalesOrderHeader.OrderNumber)){}

但是在这里它抛出一个空引用异常。如果我的父对象没有值,则如何检查属性是否为空。

注意:我使用的是C#3.0

3 个答案:

答案 0 :(得分:3)

如果变量mySalesOrderHeader为null,则无法访问其属性,否则将抛出异常。 所以,你应该先检查mySalesOrderHeader。

if  (string.IsNullOrEmpty(mySalesOrderHeader != null ? mySalesOrderHeader.OrderNumber : null))
{
...
}

答案 1 :(得分:2)

使用Null-Conditional运算符(C#6功能)。它在执行成员访问之前测试null,如下所示:

if (string.IsNullOrEmpty(mySalesOrderHeader?.OrderNumber))
{
}

答案 2 :(得分:1)

您可以尝试下面的代码段。它简单易用,适用于C#3.0

if (mySalesOrderHeader != null)
{
    // are you sure you're not missing out '!' operator at string null or empty check?
    if  (!string.IsNullOrEmpty(mySalesOrderHeader.OrderNumber))
    {
        // logic if order number has some value
    }
}

一旦检索到父对象,也只检查它(对我来说,从你的问题看来,由于某种原因绕过了空检查。)