首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 程式設計中的巢狀 If 與 Select Case 多路徑判斷完整指南

     編輯:關於ASP.NET

條件判斷是程式邏輯的基石。ASP.NET(VB.NET)提供 `If...Then...Else` 單層判斷、巢狀 `If` 處理複雜多層條件,以及 `Select Case` 簡化多值比對。本文系統整理語法結構、執行流程與最佳實踐,助您寫出清晰、可維護的判斷邏輯。

巢狀 If 語句(Nested If)

語法結構

If 條件式1 Then
    If 條件式2 Then
        語句塊1
    Else
        語句塊1-2
    End If
    其他語句
Else
    語句塊2
End If

關鍵概念:層級關係

  • 每個 `If` 都有配對的 `End If`,縮排對齊可視化層級
  • 內層 `If` 屬於外層 `If` 的「語句塊」一部分
  • `Else` 歸屬最近的未配對 `If`(無大括號時)

實務範例:會員等級折扣計算

If isMember Then
    If memberLevel = "VIP" Then
        discount = 0.8
    ElseIf memberLevel = "Gold" Then
        discount = 0.9
    Else
        discount = 0.95
    End If
Else
    discount = 1.0
End If

Select Case 多執行路徑判斷

語法結構

Select Case 運算式/變數
    Case 條件值1
        語句塊1
    Case 條件值2
        語句塊2
    Case 條件值3
        語句塊3
    ...
    Case Else
        語句塊N+1
End Select

特點與優勢

  • 單一運算式依序比對多個值,避免重複撰寫 `If x = ...`
  • 支援範圍比對:`Case 1 To 10`、`Case Is > 100`
  • 支援多值列舉:`Case "A", "B", "C"`
  • 結構扁平,閱讀性優於多層 `ElseIf`

實務範例:HTTP 狀態碼分類

Select Case statusCode
    Case 200, 201, 204
        result = "成功"
    Case 301, 302, 304
        result = "重導向"
    Case 400 To 499
        result = "用戶端錯誤"
    Case 500 To 599
        result = "伺服器錯誤"
    Case Else
        result = "未知狀態"
End Select

選擇指南:If 巢狀 vs Select Case

情境建議理由
單一布林條件、兩條路徑單層 If最簡潔
同一變數比對多個離散值Select Case結構清晰、效能略佳
複雜複合條件(多變數、範圍、邏輯運算)巢狀 If / ElseIfSelect Case 不支援複合條件
需短路求值優化效能If / ElseIfSelect Case 需完整評估運算式

現代化替代方案(.NET 4.0+ / C# 7+)

  • 模式比對:`switch` 表達式、`switch` 陳述式支援型別、屬性、Tuple 比對
  • 字典查找:`Dictionary` 或 `ConcurrentDictionary` 替代大量 `Case`
  • 策略模式:將每個分支封裝為 `Func` 或介面實作,透過 DI 注入

防禦性程式設計小撇步

  1. 永遠加上 `Case Else` / 最後的 `Else`,處理預期外輸入
  2. 避免超過 3 層巢狀,重構為獨立函式或策略類別
  3. 條件式優先寫「最可能為真」的路徑,提升分支預測命中率
  4. 使用有意義的布林變數名稱:`isValid`、`hasPermission` 而非 `flag1`

無論是巢狀 `If` 還是 `Select Case`,核心目標都是**讓業務邏輯清晰可讀、易於測試與維護**。選擇適合的工具,配合良好的命名與結構,才是寫出高品質代碼的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved