Ablaufsteuerung (C# und Java im Vergleich)

Aktualisiert: November 2007

Ablaufsteuerungsanweisungen, z. B. if else und switch, sind in Java und C# nahezu gleich.

Verzweigungsanweisungen

Verzweigungsanweisungen ändern zur Laufzeit bestimmten Bedingungen entsprechend den Ablauf der Programmausführung.

if, else, und else if

Diese Anweisungen sind in beiden Programmiersprachen gleich.

Die switch-Anweisung

In beiden Programmiersprachen stellt die switch-Anweisung mehrere bedingte Verzweigungsoperationen bereit. Im Unterschied zu C# können Sie in Java nach einer nicht erfüllten case-Bedingung mit der nächsten case-Bedingung fortfahren, es sei denn, Sie verwenden eine break-Anweisung am Ende der case-Bedingung. In C# müssen Sie entweder die break-Anweisung oder die goto-Anweisung am Ende jeder case-Bedingung verwenden. Wenn eine dieser Anweisungen fehlt, generiert der Compiler den folgenden Fehler:

Das Steuerelement kann nicht von einer case-Bezeichnung zur nächsten fortfahren.

Beachten Sie: Wenn für eine case-Bedingung kein ausführbarer Code angegeben ist und die case-Bedingung erfüllt wird, fährt das Steuerelement mit der darauffolgenden case-Bedingung fort. Wenn Sie goto in einer switch-Anweisung verwenden, können Sie nur zu einem anderen case-Block innerhalb der gleichen switch-Anweisung springen. Wenn Sie zur default-Bedingung springen möchten, verwenden Sie goto default. Für alle anderen Fälle verwenden Sie goto case cond, wobei cond die Bedingung des Falles bezeichnet, zu dem Sie springen möchten. In Java können Sie die switch-Anweisung nur mit Werten vom Typ Integer verwenden, in C# dagegen auch mit Zeichenfolgenvariablen.

Das folgende Beispiel ist in C# richtig, nicht aber in 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;
    }
}

Die Rückkehr von goto-Anweisungen

In Java ist goto ein reserviertes, aber nicht implementiertes Schlüsselwort. Durch die Verwendung von Anweisungen mit Bezeichnung in Verbindung mit break oder continue können Sie jedoch einen ähnlichen Effekt wie mit goto erzielen.

In C# können Sie mit der goto-Anweisung zu einer Anweisung mit Bezeichnung springen. Beachten Sie jedoch, dass die goto-Anweisung im Bereich der Bezeichnung liegen muss, wenn Sie zu einer bestimmten Bezeichnung springen möchten. Mit anderen Worten: Sie können mit goto zwar einen Anweisungsblock verlassen, aber nicht in einen Anweisungsblock springen, nicht aus einer Klasse herausspringen oder den finally-Block in try...catch-Anweisungen verlassen. Von der Verwendung von goto wird in den meisten Fällen abgeraten, da dies gegen die gängige Praxis objektorientierter Programmierung verstößt.

Siehe auch

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

Visual C#

Die Programmiersprache C# für Java-Entwickler