0

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

当返回 null 时,这条语句vm[0].CustomerId.HasValue 是否 返回异常?我检查了这段代码是否有简单的可空整数。但是这个语句对 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;

对此有何看法?

4

1 回答 1

1

该声明:

vm[0].CustomerId.HasValue

如果vm[0] 不为空,则不应返回异常。您应该在检查 CustomerId 值之前检查这一点。

有很多资源可以解释数组的工作原理(例如数组 C#),所以我不打算在这里解释。

于 2013-09-07T20:03:11.433 回答