共用方式為


流程控制 (C# 與 Java 的比較)

更新:2007 年 11 月

在 Java 和 C# 中的流程控制陳述式 (例如 if else 和 switch 陳述式) 十分類似。

分支陳述式

分支陳述式會根據特定條件變更執行階段中執行程式的流程。

if、else 和 else if

這些陳述式在兩種程式語言中是相同的。

switch 陳述式

在兩種程式語言中,switch 陳述式都提供了多重條件分支作業。但其中的不同之處在於,Java 可讓您從一個 case「繼續」到下一個,並執行下一個 case,除非您在 case 的結尾使用 break 陳述式。而 C# 則要求在每個 case 的結尾使用 break 或 goto 陳述式,如果兩者都不存在,編輯器就會產生下列錯誤:

程式執行無法從 case 標籤繼續到下一個。

請注意,如果符合條件的 case 中沒有指定任何要執行的程式碼,那麼程式執行將會繼續到下一個 case。在 switch 陳述式中使用 goto 時,只能跳至同一個 switch 中的其他 case 區塊。如果想要跳至預設的 case,您將會使用 goto default.。在其他情況下,則會使用 goto case cond,其中 cond 是想要跳至的 case 的符合條件。Java 的 switch 還有另一個差異,就是在 Java 中只能根據整數類資料型別來切換,而 C# 則是可讓您根據字串變數來切換。

例如,下列程式碼雖然在 C# 中有效,但是在 Java 中卻無效:

static void Main(string[] args)
{
    switch (args[0])
    {
        case "copy":
            //...
            break;

        case "move":
            //...
            goto case "delete";

        case "del":
        case "remove":
        case "delete":
            //...
            break;

        default:
            //...
            break;
    }
}

goto 的傳回

在 Java 中,goto 是不實作的保留關鍵字。不過,您可使用以 break 或 continue 標記的陳述式,以達到與 goto 類似的目的。

而 C# 則允許使用 goto 陳述式,讓程式控制權跳至標記陳述式。但是請注意,goto 陳述式必須置於標記範圍內,如此才能跳至特定標記。換言之,goto 的使用目的可能不是用來跳至某個陳述式區塊,雖然它能夠跳出陳述式區塊、跳出類別或離開 try...catch 陳述式中的 finally 區塊。建議在大多數情況下不要使用 goto,因為它違反了物件導向程式設計實務。

請參閱

概念

C# 程式設計手冊

其他資源

Visual C#

Java 開發人員可用的 C# 程式設計語言