在vb.net 2有IIF這指令,MSDN上的解釋
Public Function IIf( _
ByVal Expression As Boolean, _
ByVal TruePart As Object, _
ByVal FalsePart As Object _
) As Object
IIF的運作是TrePart和FalsePart的物件都會運算,萬一我們的判斷是包含運算 Nothing或是除0的overflow,就會出錯
舉個例,我們要把一個資料欄位的值Student_Data.Rows(0).Item("Name")給變數 name
Dim name as string if Age = 0 then name = "" else name = Student_Data.Rows(0).Item("Name") end if
如果套到IIF
Dim name as string name = iif(Age = 0,"", Student_Data.Rows(0).Item("Name"))
看似對,但是當Student_Data.Rows沒有資料時,就會有 exception
因為False Part也會被運算
還好在VS 2008之後有If這指令
If( [argument1,] argument2, argument3 )
它是true只跑True Part路徑,不會也運算 Fasle Part路徑
所以我們直接用
name = if((Age = 0,"", Student_Data.Rows(0).Item("Name"))
就不會有錯
參考:
MSDN
if
iif
Article
if improved iif
沒有留言:
張貼留言