Array null元素HasValue构造

时间:2013-09-07 19:55:20

标签: c# arrays wcf nullpointerexception

我有一个简单的代码块,它调用WCF服务API(GetActiveDevicesByDetailId),它提供一个数组作为响应。因为,我没有在客户端定义正确的类对象来接收响应,使用 var 数据类型并获取响应的属性/成员(CustomerID)。 API返回单个实体数组,我们将其用于客户端处理。因为,API只返回单个元素am获取值,如下所述。此外,要处理null(理想情况下它不应该返回null),我正在检查并返回null,如果它。

当返回null时,此语句 vm [0] .CustomerId.HasValue 是否返回异常?我检查了这段代码的简单可空整数。但是这个陈述对于数组有什么作用?

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;

对此有何意见?

1 个答案:

答案 0 :(得分:1)

声明:

vm[0].CustomerId.HasValue

不应返回提供的异常,即vm [0]不为空。您应该在检查CustomerId值之前检查这一点。

有足够的资源来解释数组的工作方式(例如Arrays C#),所以我不打算在这里解释。