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 関数は短絡評価を使用しないため、常に 3 つの引数すべてを評価します。つまり、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 に答える