Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C# Wozu explizite "break;" angabe bei case? (Switch-Case) (https://www.delphipraxis.net/63893-wozu-explizite-break%3B-angabe-bei-case-switch-case.html)

Pseudemys Nelsoni 24. Feb 2006 07:26


Wozu explizite "break;" angabe bei case? (Switch-C
 
Moin,

soweit ich mich in ein C# Tutorial eingelesen habe, muss jede "case"-Bedingung letzendlich mit einem "break;" enden, da sonst ein Compilerfehler auftritt. Meine Frage ist, wieso muss man das? Wenn es sowieso 100% da stehen muss, wieso tut der Compiler das nicht selbst? Wie bei Delphi? Ok man könnte auch fragen wieso die Banane krumm ist, aber trotzdem interessiert mich das einfach. Hat das nen besonderen Grund?

Bernhard Geyer 24. Feb 2006 07:37

Re: Wozu explizite "break;" angabe bei case? (Swit
 
Es hat den Grund um einen beliebtes Feature/Fehlerquelle von C/C++ zu vermeiden.
Dort kann man durch weglassen von break eine case-Bedingung in die andere "springen" lassen. Da hier break Optional war und es des öfteren Vergessen wurde (bzw. nicht überall gewollt war) hat man bei C# gesagt das Springen in einen andere Case-Bedingung ist nicht mehr erlaubt und man muß (damit man C-Like ist) ein break angeben.
Ist also nur dopppelt-gemoppelt aber der C/C++-Programmierer fühlt sich besser aufgehoben.

JasonDX 24. Feb 2006 08:30

Re: Wozu explizite "break;" angabe bei case? (Swit
 
Zitat:

Zitat von Bernhard Geyer
hat man bei C# gesagt das Springen in einen andere Case-Bedingung ist nicht mehr erlaubt und man muß (damit man C-Like ist) ein break angeben.

Nicht ganz, folgendes funktioniert bei mir:
Code:
sqitch (c)
{
  case 'a': goto case 'b';
  case 'b': return;
  case 'c': doSomething(); break;
  default: doSomethingElse(); break;
}
So wie mir das hier erklärt wurde, muss man in C# bei einem case explizit durchfallen. Das bedeutet, entweder ein Break muss hin oder eben ein return, goto oder sonstwas, das zu einem break führt. afair.

greetz
Mike

[Edit]Arghs, tatsächlich n break vergesseh :oops:

Pseudemys Nelsoni 24. Feb 2006 08:32

Re: Wozu explizite "break;" angabe bei case? (Swit
 
Danke Leute :).


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz