跳到主要內容

發表文章

目前顯示的是 3月, 2014的文章

[.net] IIF and Nullable Var

用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