1

例如,

Dim Test as Guid 

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

他们导致了一个错误 - “无法识别的 guid 格式”

我试图做下面的if语句

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

它对我有用。

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

4

2 回答 2

0

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

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

于 2015-07-11T06:03:20.883 回答
0

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

Test = IIf(IsDBNull(DataReader("ID"))=true, Guid.Empty, DataReader("ID"))
于 2015-07-11T05:53:35.733 回答