用IIF來判斷資料是否符合條件是很簡潔的方法
但是對於nullable的資料型態
因為資料會有null的狀況
所以要做IIF的statement反而會有一些問題
例如
Dim a As New Boolean?
執行程序會出現
Dim r As String
r = IIf(a.HasValue, IIf(a.Value, "T", "F"), "N")
「可為 Null 的物件必須具有值。」
這是因為在內層iif的 判斷是是a.value
雖然看起來邏輯我們在外層的iiF已經判斷a是否有值
但是在執行的時候 還是會先對先執行內部的IIF函數 然後再執行外部IIF判斷
Dim a As New Boolean?
Dim r As String
r = IIf(a.HasValue, IIf(a.GetValueOrDefault, "T", "F"), "N")
此外還可以改用IF函數改寫 Dim a As New Boolean?
Dim r As String
r = If(a.HasValue, If(a.Value, "T", "F"), "N")
至於原因為何 只能說IF函數的執行比較沒有那麼嚴警吧:P
留言