這次的文章算隨筆 純粹是我之前印象 VB 的單行式判斷式 IIf 在某些狀況下是會有問題的,結果看到了公司的 Code 中有單行式判斷式 - If ,本來以為是類似 Alias 的東西,不過仔細探究才發現兩者的作法並不一樣 這裡稍微講述一下我之前對 IIf 的例外狀況的印象,首先 IIf 的格式是長這樣 IIf(Expression As Boolean, TruePart As Object, FalsePart As Object) As Object 當 Expression 為 True ,則回傳 TruePart ,否則則回傳 FalsePart 的部份 這看起來很直覺,感覺沒什麼問題,那我說的狀況是怎樣呢? 如果 TruePart 或 FalsePart 為一函式的呼叫,而如果 Expression 為 True 時,FalsePart 的函式則不能呼叫的狀況 舉例來說,如果 Expression 判斷某個變數值是否是 Nothing ,而 FalsePart 呼叫的函式會在該變數值為 Nothing 被呼叫的話,就會產生 Exception 至此,應該知道我說的狀況是什麼了?是的,就是其實 IIf 是函式,他是會將 TruePart 及 FalsePart 上的函式先進行評估運算後進行呼叫 實際可以以以下程式碼作測試: Sub Main() Dim bln As Boolean = True Console.WriteLine(IIf(bln, A(), B())) Console.WriteLine("====================================") Console.WriteLine(If(bln, A(), B())) End Sub Function A() As String Console.WriteLine("A(...
留言
張貼留言