我有一个从外部系统获取对象的类。我想验证我的参数是否正确。即使我向服务发送了错误的值,我的对象似乎也不是null。基本上我想检查mySalesOrderHeader
是否包含有效的订单号。
例如,if (mySalesOrderHeader != null) { Do My Stuff}
我从系统中检索mySalesOrderHeader
后检查此情况。在我的if condition[Where {Do My Stuff}]
里面,我正在访问它的属性并检查它的存在。
if(string.IsNullOrEmpty(mySalesOrderHeader.OrderNumber)){}
但是在这里它抛出一个空引用异常。如果我的父对象没有值,则如何检查属性是否为空。
注意:我使用的是C#3.0
答案 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
}
}
一旦检索到父对象,也只检查它(对我来说,从你的问题看来,由于某种原因绕过了空检查。)