空条件运算符

时间:2019-05-10 11:24:25

标签: c# null-conditional-operator

我正在使用第三方asmx将数据绑定到我的UI。由于隐私政策,我无法发布WSDL。

仅提供概述,我正在从asmx服务响应中读取信息并解析为如下所示的自定义模型。

var obj = New Employee ();
obj.Name = ProxyResponse.Employee.Name;
obj.Salary = ProxyResponse.Employee.ProfessionalInfo.Salary;
obj.BirthDate = ProxyResponse.Employee.PersonalInfo.BirthDate.Date;

我正在从5个不同的asmx服务解析20-30个模型。一切正常,直到遇到问题。例如,在以上代码段中,BirthDate对象可以为null。如果出生日期为null,则上述片段将引发null指针异常。我可以简单地对出生日期进行空检查,并可以解决此问题。但是在上面的示例中,我在WSDL中注意到比期望的名称要多,任何东西都可以为null。如果用户的个人信息之一为空,该怎么办。我有20个这样的代理对象,每行的null检查会使我的代码很脏,所以我想出了以下方法。

var obj = New Employee ();
obj.Name = ProxyResponse.Employee.Name;
obj.Salary = ProxyResponse.Employee?.ProfessionalInfo?.Salary;
obj.BirthDate = ProxyResponse.Employee?.PersonalInfo?.BirthDate?.Date;

以上解决方案正确吗?它会影响性能吗?有更好的解决方案吗?我已经发布了简单的示例,但是我的应用程序具有更为复杂的代理对象,我正在阅读近400个属性。

谢谢。

0 个答案:

没有答案