2015-06-12 60 views
1

例如工作,I如果方法不IsDBNull以便(Guid.empty)

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方法的問題嗎?

回答

0

從邏輯上說,您的代碼是相同的,應該以兩種方式工作。 是的,我認爲它在4.0版 一個問題,但以這種方式嘗試也

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

IIF函數不使用短路計算,它總是計算所有三個它的參數。這意味着即使IsDBNull(DataReader("ID"))等於true,DataReader("ID")仍然會被評估,並且可能是您的錯誤原因。

自從VB.Net問世以來,至少有這種情況,所以它不是一個框架問題。