更新: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,因為它違反了物件導向程式設計實務。