![]() |
C#: switch-Anweisung hat Probleme bei default
Ich habe folgende switchanweisung in C#:
Code:
Wenn ich das jetzt in #Develop kompilieren will, kriege ich diese Fehlermeldung:
switch (Data[i].ToCharArray()[0]) //Data ist string[]
{ case '>': { if (CurrentNode != null) { CurrentNode = CurrentNode.AddKid(new cNode()); } else { CurrentNode = new cNode(); } } break; case '<': { CurrentNode = CurrentNode.Parent; } break; default: { CurrentNode.Pos = new cVector(Data[i++]); CurrentNode.Dir = new cVector(Data[i]); // break; } } Compilermeldung Control cannot fall through from one case label ('default:') to another(CS0163) Wenn ich jedoch die Kommentarzeichen beim letzten break wegtu, klappts perfekt. Wieso? |
Re: C#: switch-Anweisung hat Probleme bei default
Hiho,
Weil das Switchstatement so definiert ist unter C#. Siehe C# Programmer Reference:
Delphi-Quellcode:
MfG:)
switch (expression)
{ case constant-expression: statement jump-statement //break; continue; return; etc.. [default: statement jump-statement] } |
Re: C#: switch-Anweisung hat Probleme bei default
oh, thx!
Wieso wurde die sprung-anweisung am ende noch eingefügt? Oder anders formuliert: Wieso wurde sie nicht so gelassen, wie sie unter C/C++ war? |
Re: C#: switch-Anweisung hat Probleme bei default
Das ist die Regel des "Nichtdurchfallens" :mrgreen: .
Zitat:
|
Re: C#: switch-Anweisung hat Probleme bei default
Zitat:
In C# musst du explizit durchfallen. Ein vergessener Sprung führt zum Kompilierfehler. :) Ein break bei default würde IMHO keinerlei Sinn machen. Schließlich hat der Ausdrcuk keinem case entsprochen. Wohin sollte er denn durchfallen? -> Man braucht also kein break ;) |
Re: C#: switch-Anweisung hat Probleme bei default
Hiho,
Nunja gedacht haben sie sich dabei sicherer zu werden, so daß wenn ein case-statement ausgelöst wurde kein anderes statement ausgelöst wird, ein sogenannter "Fall-Through". Deswegen erzwingt der Compiler ein Jump-Statement. Eine Ausnahme gibt es:
Delphi-Quellcode:
Man kann noch so "schön" mit goto arbeiten, aber da lass ich jetzt die Finger von :mrgreen:
switch(person)
{ case "Robert_G": case "Chimaira": antwort= "Hallo Robert_G und Chimaira"; break; ...usw. } MfG :) |
Re: C#: switch-Anweisung hat Probleme bei default
Zitat:
Zitat:
Ich find das ganze ziemlich seltsam, weil im default ein break... :gruebel: |
Re: C#: switch-Anweisung hat Probleme bei default
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz