条件语句返回异常错误

时间:2017-10-15 03:22:37

标签: vb.net

我有这个条件陈述

loRecordFieldData = CType(IIf(loRecordsAttributeCollection.ContainsKey(loMappingObject.FieldID), _
                    loRecordsAttributeCollection(loMappingObject.FieldID), Nothing)

问题是当loRecordsAttributeCollection没有包含FieldID时,它返回异常错误密钥而不是找不到。

有人可以解释这个以及如何预防吗?

谢谢

2 个答案:

答案 0 :(得分:2)

IIf是一个函数,因此它的所有参数都将在调用之前进行求值。请改用If,这是一个真正的内联条件,不会评估未返回的操作数:

loRecordFieldData = CType(If(loRecordsAttributeCollection.ContainsKey(loMappingObject.FieldID), _
                    loRecordsAttributeCollection(loMappingObject.FieldID), Nothing)

如果这是字典,您也可以使用TryGetValue或将其包装在扩展方法中:

Dim loRecordFieldData As …  ' the value type of loRecordsAttributeCollection

loRecordsAttributeCollection.TryGetValue(loMappingObject.FieldID, loRecordFieldData)

' now cast

答案 1 :(得分:0)

使用If代替。 IIf语法在vb.net中已经过时了