Programmierkurs C-Sharp: Sprungbefehle

Aus Wikibooks

Wechseln zu: Navigation, Suche
Regal: Programmierung Programmierkurs C# Bild:Wikibooks buchseite.svg Sprungbefehle

Manchmal ist es notwendig, den normalen Programmablauf unterbrechen und unmittelbar im Programmcode Sprünge durchführen zu können. Dabei helfen uns eine Reihe Sprungbefehle im C#.

Inhaltsverzeichnis

[Bearbeiten] Break

Der break-Befehl unterbricht die Ausführung einer Schleife oder einer bedingten Verzweigung.

public void Methode()
{
  int i = 0;

  do
  {
    i++;
    if (i == 5) 
    {
      break;
    }

    Console.WriteLine( i );
  }
  while (i < 100);
}
public void Methode()
{
  int i = 1;

  switch ( i )
  {
    case 1:
      Console.WriteLine( "Die Variable i hat zur Zeit den Wert: {0}", i );
      break;
    case 2:
      Console.WriteLine( "Die Variable i wurde verändert." );
      break;
  }  
}

[Bearbeiten] Continue

Das Schlüsselwort continue beginnt sofort den nächsten Schleifendurchlauf.

public void Methode()
{
  int i = 0;

  for (i = 1; i <= 10; i++)
  {
    if (i < 5)
    {
      continue;
    }

    Console.WriteLine( i );
  }
}
Wikipedia
Wikipedia hat einen Artikel zum Thema:

[Bearbeiten] Goto

Der Sprungbefehl goto ist ein Relikt aus der Zeit des Spaghetti-Codes. Mit seiner Hilfe kann man - nahezu - beliebig im Programmcode herumspringen: Dieses Beispiel simuliert eine einfache Schleife, indem solange zur sogenannten Sprungmarke gesprungen wird, wie i kleiner als 5 ist.

public int Methode()
{
  int i = 0;

Top:           // Sprungmarke

  if (i < 5) 
  {
    i++;
   
    goto Top;  // Sprungbefehl
  }

  Console.WriteLine( i );
}


Letzten Endes ist dieser Sprungbefehl aber nur ein Zugeständnis an die Leute, die zwar mit C# programmieren wollen, aber den goto-Sprungbefehl aus anderen Programmiersprachen, beispielsweise C, gewohnt sind und glauben, nicht mehr ohne leben zu können. Wir, als echte objektorientierte Programmierer, sollten darauf völlig verzichten. Es gibt praktisch keine Situation, in der wir nicht ebenso gut - oder sogar viel besser - mit andere Mitteln auskommen:

public int Methode()
{
  int i = 0;

  while (i < 10) 
  {
    i++;
  }

  Console.WriteLine( i );
}

[Bearbeiten] Return

Dieser Sprungbefehl wird uns allerdings sehr häufig begegnen. Mit Hilfe des Schlüsselworts return beenden wir die Ausführung einer Methode unmittelbar.

public void Methode()
{
  int i = 10;
 
  return;

  Console.WriteLine( i );  // Diese Zeile wird nie erreicht.
}

Je nachdem, ob die Methode einen Rückgabewert hat, kann auch return einen Wert (dann allerdings vom gleichen Datentyp) zurückgeben:

public int Methode()
{
  int i = 10;
 
  return i;
 
  Console.WriteLine( i );  // Diese Zeile wird nie erreicht.
}
public string Methode()
{
  string ergebnis = "Wir testen den Sprungbefehl return.";
 
  return ergebnis;

  Console.WriteLine( ergebnis );  // Diese Zeile wird nie erreicht.
}

Dieser Sprungbefehl wird uns insbesondere in den bedingten Verzweigungen wieder begegnen.

[Bearbeiten] Throw

Das Schlüsselwort throw löst eine Ausnahme aus und beendet, genauso wie return, unmittelbar die weitere Ausführung der Methode, um direkt zur nächsten Ausnahmebehandlung zu laufen. Gibt es keine Ausnahmebehandlung und gehört die mit throw ausgelöste Ausnahme zu den kritischen, wird gegebenenfalls auch das Programm mehr oder weniger brutal beendet.

public int Methode()
{
  int i = 10;
 
  if (i == 10) throw;

  Console.WriteLine( i );  // Diese Zeile wird nie erreicht.
}

Obwohl man throw ganz offensichtlich zum Springen benutzen kann, gehört es zum wirklich schlechten Stil, solche Konstrukte zu bauen. Und das nicht nur, weil wir damit die Performance unseres Programms wirklich negativ beeinflussen. Das Auslösen einer Ausnahme wird im Kapitel Ausnahmen und Fehler genauer behandelt.

[Bearbeiten] Siehe auch

Jump Statements (C# Reference) (Microsoft, englisch)



Regal: Programmierung Programmierkurs C# Bild:Wikibooks buchseite.svg Sprungbefehle
Persönliche Werkzeuge