IIf方法不适用于IsDBNull(Guid.empty)

时间:2015-06-12 18:26:28

标签: vb.net-2010 iif-function

例如,

Dim Test as Guid 

Test = IIf(IsDBNull(DataReader("ID")), Guid.Empty, DataReader("ID"))

他们造成了错误 - “无法识别的guid格式”

我试图做下面的陈述

If(IsDBull(DataReader("ID")) Then
   Test = Guid.Emtpy
Else
   Test = DataReader("ID")
End If

它对我有用。

4.0框架是否存在处理空guid值或非空guid值的IIf方法的问题?

2 个答案:

答案 0 :(得分:0)

从逻辑上讲,您的代码是相同的,并且应该以两种方式工作。 是的,我认为它是版本4.0中的一个问题 但你也尝试这种方式

Signal

答案 1 :(得分:0)

IIf函数不使用短路评估,它总是评估它的所有三个参数。这意味着,即使IsDBNull(DataReader("ID"))等于true,仍然会评估DataReader("ID")并且可能导致错误。

自从VB.Net出现以来,情况至少就是如此,所以它不是框架问题。