Control cannot fall through from one case to another?
-
hi I have these code . What could cause above error ? Thanks state=1 switch (state) { case 1: //do something goto case 2; case 2: //do something goto case 3; case 3: //do something goto case 4; ............ case 100: //do something }
-
hi I have these code . What could cause above error ? Thanks state=1 switch (state) { case 1: //do something goto case 2; case 2: //do something goto case 3; case 3: //do something goto case 4; ............ case 100: //do something }
I'm almost speechless! I'll leave it for others to say as I'm in a good mood today. Look up
break
(and maybe default: too).Dave
BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
Why are you using VB6? Do you hate yourself? (Christian Graus) -
hi I have these code . What could cause above error ? Thanks state=1 switch (state) { case 1: //do something goto case 2; case 2: //do something goto case 3; case 3: //do something goto case 4; ............ case 100: //do something }
YEUCK! I have copied your code to "Coding Horrors"! This is C#, not C++. Switch blocks cannot fall through in C#, they must end in a break statement. Please, go and look at a C# book under two sections: "switch statement" and "Don't use goto unless you really, really have to"
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
-
hi I have these code . What could cause above error ? Thanks state=1 switch (state) { case 1: //do something goto case 2; case 2: //do something goto case 3; case 3: //do something goto case 4; ............ case 100: //do something }
I need to convert these C++ code into C# code . What's is the easiest way ? thanks state=1 switch (state) { case 1: //do something state++; case 2: //do something if ( ) { state++; } else { state=state+5; } break; case 3: //do something state++; ............ case 100: break; }
-
YEUCK! I have copied your code to "Coding Horrors"! This is C#, not C++. Switch blocks cannot fall through in C#, they must end in a break statement. Please, go and look at a C# book under two sections: "switch statement" and "Don't use goto unless you really, really have to"
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
-
I need to convert these C++ code into C# code . What's is the easiest way ? thanks state=1 switch (state) { case 1: //do something state++; case 2: //do something if ( ) { state++; } else { state=state+5; } break; case 3: //do something state++; ............ case 100: break; }
-
YEUCK! I have copied your code to "Coding Horrors"! This is C#, not C++. Switch blocks cannot fall through in C#, they must end in a break statement. Please, go and look at a C# book under two sections: "switch statement" and "Don't use goto unless you really, really have to"
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
OriginalGriff wrote:
Don't use goto unless you really, really have to
Fixed that for you :)
Never underestimate the power of human stupidity RAH
-
I need to convert these C++ code into C# code . What's is the easiest way ? thanks state=1 switch (state) { case 1: //do something state++; case 2: //do something if ( ) { state++; } else { state=state+5; } break; case 3: //do something state++; ............ case 100: break; }
Firstly, find the programmer who originally wrote this. Take him outside, and beat him senseless. It's pretty bad code as C++, and can't be directly translated into C# as the later enforces rules to prevent accidental mistakes (such as fall through of cases). Secondly, get out a pen and paper and do a flow diagram of some sort to work out how this spagetti works. Tidy the diagram up so it can be reliably implemented in any language. Re-code into C#. Not a quick job by any means, but it's the companies' (or whoevers') fault for allowing such rubbish to be produced in the first place!
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
-
hi I have these code . What could cause above error ? Thanks state=1 switch (state) { case 1: //do something goto case 2; case 2: //do something goto case 3; case 3: //do something goto case 4; ............ case 100: //do something }
Oh, dear
- Never use goto. It kills babies
- You just drop though each case. Why?
- You do a switch, when you've just set the variable you switch on
- You have one hundred hard-coded cases. Find out how to make that dynamic
- The switch is unnecessary. If you're just dropping through, then it won't make any difference
- You have basically implemented line labels. Why do you have line labels, when you can refactor your code
- No default: option
- The first line of is missing a semicolon
-
Oh, dear
- Never use goto. It kills babies
- You just drop though each case. Why?
- You do a switch, when you've just set the variable you switch on
- You have one hundred hard-coded cases. Find out how to make that dynamic
- The switch is unnecessary. If you're just dropping through, then it won't make any difference
- You have basically implemented line labels. Why do you have line labels, when you can refactor your code
- No default: option
- The first line of is missing a semicolon
Computafreak wrote:
You just drop though each case. Why?
This is a state-machine with a selectable first state. If C# had a "computed goto" (as Fortran has) then the switch would not be necessary. :)
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
-
OriginalGriff wrote:
Don't use goto unless you really, really have to
Fixed that for you :)
Never underestimate the power of human stupidity RAH
There are times when a goto can really improve readability, rather than if...if..if..if... etc. Having said that, I don't think I've used one in a non-assembler language for twenty or so years.
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
-
There are times when a goto can really improve readability, rather than if...if..if..if... etc. Having said that, I don't think I've used one in a non-assembler language for twenty or so years.
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
If you're a student/junior dev though; the rule is NEVER. You're not experienced enough to ID the few cases where it really is the best choice and will just learn bad habits.
It is a truth universally acknowledged that a zombie in possession of brains must be in want of more brains. -- Pride and Prejudice and Zombies
-
Computafreak wrote:
You just drop though each case. Why?
This is a state-machine with a selectable first state. If C# had a "computed goto" (as Fortran has) then the switch would not be necessary. :)
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
Luc Pattyn wrote:
If C# had a "computed goto"
I'd have stuck with C++. :laugh:
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones
-
I need to convert these C++ code into C# code . What's is the easiest way ? thanks state=1 switch (state) { case 1: //do something state++; case 2: //do something if ( ) { state++; } else { state=state+5; } break; case 3: //do something state++; ............ case 100: break; }
Why use a case at all, it seems pretty procedural to me. You want to execute a block of code in order, your condition isn't really needed since you always increment 'state', so your select case is useless.
-
If you're a student/junior dev though; the rule is NEVER. You're not experienced enough to ID the few cases where it really is the best choice and will just learn bad habits.
It is a truth universally acknowledged that a zombie in possession of brains must be in want of more brains. -- Pride and Prejudice and Zombies
dan neely wrote:
the rule is NEVER
Absolutly true... Learn the law! Obey the law! Fear the law! Believe the law! And THEN you can break the law!
Panic, Chaos, Destruction. My work here is done.
-
If you're a student/junior dev though; the rule is NEVER. You're not experienced enough to ID the few cases where it really is the best choice and will just learn bad habits.
It is a truth universally acknowledged that a zombie in possession of brains must be in want of more brains. -- Pride and Prejudice and Zombies
Then how do you execute multiple cases in a switch in C#?
-
hi I have these code . What could cause above error ? Thanks state=1 switch (state) { case 1: //do something goto case 2; case 2: //do something goto case 3; case 3: //do something goto case 4; ............ case 100: //do something }
I wrote this code to test: int i=int.Parse(Console.ReadLine()); switch(i) { case 0: Console.WriteLine(0); goto case 1; case 1: Console.WriteLine(1); break; } This works. If you don't do the goto case 1 you will receive an error, and if you don't do the break at case 1 you will also receive an error. I think the problem with your code is the lack of some "goto case x" or some "break". --- I don't like such gotos, but if that the best way, try finding the lacking gotos / breaks.
modified on Wednesday, May 13, 2009 10:06 AM
-
Computafreak wrote:
You just drop though each case. Why?
This is a state-machine with a selectable first state. If C# had a "computed goto" (as Fortran has) then the switch would not be necessary. :)
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
Luc Pattyn wrote:
state-machine
I prefer to put the
switch
in awhile
, rather than use fall-through for that. -
dan neely wrote:
the rule is NEVER
Absolutly true... Learn the law! Obey the law! Fear the law! Believe the law! And THEN you can break the law!
Panic, Chaos, Destruction. My work here is done.
williamnw wrote:
Learn the law! Obey the law! Fear the law! Believe the law!
**
Judge Dredd wrote:
I am the law!!
**
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones