2015-06-12 8 views
1

Например,метод IIf не работает с IsDBNull (Guid.empty)

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 рамки проблемы с методом IIf, обрабатывающим пустое значение направляющей или непустое значение guid?

ответ

0

логически ваши коды одинаковы и должны работать в обоих направлениях. да я думаю, что его проблема в версии 4.0 , но вы пытаетесь таким образом, также

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

Функция IIf не использует оценки короткого замыкания, он всегда оценивает все три своих аргументов. Это означает, что даже если значение IsDBNull(DataReader("ID")) равно true, DataReader("ID") по-прежнему оценивается и является вероятной причиной ошибки.

Это, по крайней мере, имело место с момента появления VB.Net, поэтому это не проблема с каркасом.