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

VB.NET 實現 C# continue 效果的三種寫法與版本演進

     編輯:關於C語言

語言差異背景

C# continue 直接跳過本次迴圈剩餘程式碼,進入下一次迭代。VB.NET 在 2005 (VB 9.0, .NET 2.0) **之前** 缺乏此關鍵字,需用邏輯反轉或 GoTo 模擬。

目標邏輯 (C#)

int sum = 0;
for (int i = 1; i <= 100; i++)
{
    if (i % 2 != 0) continue; // 跳過奇數
    sum += i;                 // 只累加偶數
}

VB.NET 2003 / 2005 之前:三種替代方案

1. 邏輯反轉 (推薦:結構化、可讀、無副作用)

Dim sum As Integer = 0
For i As Integer = 1 To 100
    If (i Mod 2 = 0) Then     ' 反轉條件:符合才執行
        sum += i
    End If
Next

2. GoTo 標籤 (不推薦:破壞結構化、難維護)

Dim sum As Integer = 0
For i As Integer = 1 To 100
    If (i Mod 2 <> 0) Then
        GoTo ContinueLabel    ' 跳至迴圈尾部
    End If
    sum += i
ContinueLabel:
Next

3. 巢狀 If 包裹整個迴圈體 (冗長)

For i As Integer = 1 To 100
    If (i Mod 2 = 0) Then
        ' 整個邏輯縮進一層
        sum += i
    End If
Next

VB.NET 2005 (VS 2005, .NET 2.0) 起:原生支援 Continue For

Dim sum As Integer = 0
For i As Integer = 1 To 100
    If i Mod 2 <> 0 Then Continue For ' 直接跳過本次
    sum += i
Next

' 同樣支援 Continue Do / Continue While
Dim ii As Integer = 1
Do While ii < 100
    ii += 1
    If ii = 50 Then Continue Do
    Console.WriteLine(ii)
Loop

IL 層面觀察

Continue For 編譯為無條件分支 br.s 指向迴圈增量/條件檢查區塊,與 C# continue 產生的 IL **完全等價**。

遷移建議

  1. **舊專案維護**:優先用「邏輯反轉」重構,消除 GoTo,提升可讀性。
  2. **新專案**:直接使用 Continue For/Do/While,語意清晰、效能相同。
  3. **程式碼轉換工具** (如 Telerik Code Converter) 會自動將 C# continue 轉為 VB Continue For。

補充:Exit For vs Continue For

關鍵字行為C# 對應
Continue For跳過本次,執行下一次迭代continue
Exit For完全跳出迴圈break

理解版本演進與替代模式,能在跨語言維護、代碼審查、遷移專案時做出正確判斷。

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