IIF以外的另一項選擇--使用Switch函式作多個值的判斷【VB Only】

IIF以外的另一項選擇--使用Switch函式作多個值的判斷【VB Only】

實務上常會使用IIF函式進行運算式的評估,若運算式為真則將傳回TruePart的物件,若為假則傳回FalsePart的物件,若要判斷的運算式只有兩種結果,也就是不是真就是假,那麼IIF函式就相當好用,但若是要進行下列判斷,使用IIF函式恐怕就比較不是太好閱讀。

分數級距 級距名稱
<60 不及格
>= 60 and <70
>= 70 and <80
>= 80 and <90
>= 90
  • 下列程式碼示範使用IIF來完成上表所需的邏輯。
   1:  Dim result As String = IIf(score < 60, "不及格" _
   2:                      , IIf(score >= 60 And score < 70, "丙" _
   3:                      , IIf(score >= 70 And score < 80, "乙" _
   4:                      , IIf(score >= 80 And score < 90, "甲", "優"))))

  • 執行結果:

imageimageimageimageimage

  • 下列程式碼使用Switch來完成上表所需的邏輯。
   1:  Dim result As String = Switch(score < 60, "不及格", _
   2:                              score >= 60 And score < 70, "丙", _
   3:                              score >= 70 And score < 80, "乙", _
   4:                              score >= 80 And score < 90, "甲", _
   5:                              score >= 90, "優")

  • 執行結果同上。

 

由上述以IIF及Switch兩種方法完成相同的邏輯判斷,雖結果相同但就閱讀性,筆者以為Switch較易閱讀,於更複雜的判斷時可降低寫錯的機會,同時Swich函式同樣適用於Microsoft Report中的邏輯判斷。

 

參考資料:

http://msdn.microsoft.com/zh-tw/library/dft2z9yf(v=vs.90).aspx

http://msdn.microsoft.com/zh-tw/library/27ydhh0d(v=vs.90).aspx