【发布时间】:2013-09-07 19:55:20
【问题描述】:
我有一个调用 WCF 服务 API(GetActiveDevicesByDetailId) 的简单代码块,它提供单个数组作为响应。因为,我没有在客户端定义正确的类对象来接收响应,我正在使用 var 数据类型并获取响应的属性/成员(CustomerID)。 API 返回一个我们用于客户端处理的实体数组。因为,API 只返回单个元素,获取如下所述的值。此外,为了处理 null(理想情况下它不应该返回 null),我正在检查并返回 null(如果是)。
这个语句vm[0].CustomerId.HasValue在返回null时是否返回异常?我检查了这段代码是否有简单的可空整数。但是这个语句对 Arrays 有什么作用呢?
var vm = client.GetActiveDevicesByDetailId(DetailID);
if (vm[0].CustomerId.HasValue)
return vm[0].CustomerId.Value;
else
return null;
通过使用 GetValueorDefault() 解决。
var vm = client.GetActiveDevicesByDetailId(DetailID);
if (vm[0] != null)
return vm[0].CustomerId.GetValueOrDefault();
else
return null;
对此有何看法?
【问题讨论】:
-
你必须有正确的类对象定义并且使用
var不会改变任何东西。 -
不,这是现在的问题。我们对 API 的响应没有确切的定义。我编写的 if 检查将检查“v[0].CustomerId”是否具有值,如果 v[0] 本身为空并且它尝试访问其 CustomerId 列,var 数据类型是否固有地处理这种情况?或者我们得到一个 NPE ?
-
您的项目如何引用该服务?如果是通过“添加服务引用”,那么返回对象的定义应该在那里。这是第三方网络服务吗?
标签: c# arrays wcf nullpointerexception