OMG a "Goto"
-
My 5, that code is pure Horror. Anyway (I made a test) the
goto
statement it is ininfluent. BTW I didn't knowC#
has goto statement, is there a reason to have it in such a language? :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]CPallini wrote:
BTW I didn't know C# has goto statement, is there a reason to have it in such a language?
A reason ? Maybe no, but you could need one if you use a switch.
switch(iData) { case 0: case 1: // do stuff for 0 and 1 break; case 2: // do stuff for 2 goto 3; case 3: // do stuff for 2 and 3 break; }
Learn from the mistakes of others, you may not live long enough to make them all yourself.
-
My 5, that code is pure Horror. Anyway (I made a test) the
goto
statement it is ininfluent. BTW I didn't knowC#
has goto statement, is there a reason to have it in such a language? :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]Search the lounge for prior floggings of this subject. There are (very) rare cases when a goto can actually make the code more readable. "Because otherwise I'd have a half dozen levels of if/else indentation in [a 1000 line VBA function]" isn't one of them. :mad: :doh: :omg: :wtf: :mad: :((
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
-
protected void Page_Load(object sender, EventArgs e)
{
string str = "Even exception occur again in catch block still finally block is Working";
try
{
throw new IndexOutOfRangeException();
}
catch
{
goto Hello;
throw new IndexOutOfRangeException();}
finally
{
Response.Redirect("Error.aspx?str="+ str);
}
Hello:
Response.Write("Finally Skiped!");
}http://www.codeproject.com/KB/aspnet/DotNetBulletQuestions.aspx?msg=2764693#xx2764693xx[^] A goto in a try/catch/finally block... urrrghh!
That code was written simply to make a point, it's not "real" code, so it doesn't qualify as a Coding Horror.
-
CPallini wrote:
BTW I didn't know C# has goto statement, is there a reason to have it in such a language?
A reason ? Maybe no, but you could need one if you use a switch.
switch(iData) { case 0: case 1: // do stuff for 0 and 1 break; case 2: // do stuff for 2 goto 3; case 3: // do stuff for 2 and 3 break; }
Learn from the mistakes of others, you may not live long enough to make them all yourself.
Yeah, the poor mans drop through.
Bar fomos edo pariyart gedeem, agreo eo dranem abal edyero eyrem kalm kareore
-
CPallini wrote:
BTW I didn't know C# has goto statement, is there a reason to have it in such a language?
A reason ? Maybe no, but you could need one if you use a switch.
switch(iData) { case 0: case 1: // do stuff for 0 and 1 break; case 2: // do stuff for 2 goto 3; case 3: // do stuff for 2 and 3 break; }
Learn from the mistakes of others, you may not live long enough to make them all yourself.
o really ?? i think it can be used like this : switch(iData) { case 0: case 1: // do stuff for 0 and 1 break; case 2: // do stuff for 2 case 3: // do stuff for 2 and 3 break; } if the break statement is missing, it go through next case ..
VirtualVoid**.NET**
-
o really ?? i think it can be used like this : switch(iData) { case 0: case 1: // do stuff for 0 and 1 break; case 2: // do stuff for 2 case 3: // do stuff for 2 and 3 break; } if the break statement is missing, it go through next case ..
VirtualVoid**.NET**
It is NOT
C/C++
, my friend, it isC#
;PJuraj Suchan wrote:
case 0: case 1: // do stuff for 0 and 1 break;
Fine: It is allowed.
Juraj Suchan wrote:
case 2: // do stuff for 2 case 3: // do stuff for 2 and 3 break;
That's not allowed in
C#
(well, in fact, it is allowed as it stands, with just comments :-D ). :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
It is NOT
C/C++
, my friend, it isC#
;PJuraj Suchan wrote:
case 0: case 1: // do stuff for 0 and 1 break;
Fine: It is allowed.
Juraj Suchan wrote:
case 2: // do stuff for 2 case 3: // do stuff for 2 and 3 break;
That's not allowed in
C#
(well, in fact, it is allowed as it stands, with just comments :-D ). :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
My 5, that code is pure Horror. Anyway (I made a test) the
goto
statement it is ininfluent. BTW I didn't knowC#
has goto statement, is there a reason to have it in such a language? :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]I like this reason as well void foobar() { // blah blah blah for(...) { // blablabla for(..) { // foo foo foo if(bar) goto end; } } end: // beep bop a loola }
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
I like this reason as well void foobar() { // blah blah blah for(...) { // blablabla for(..) { // foo foo foo if(bar) goto end; } } end: // beep bop a loola }
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
You may throw an exception for that. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
I like this reason as well void foobar() { // blah blah blah for(...) { // blablabla for(..) { // foo foo foo if(bar) goto end; } } end: // beep bop a loola }
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
A simple 'break' would do the job, no need for 'goto'... :^) Regards Thomas
-
A simple 'break' would do the job, no need for 'goto'... :^) Regards Thomas
break will only break the inner most loop! C# is not java where you could have labelled loop...
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
You may throw an exception for that. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]That's a worse offense than a goto IMHO - exceptions should be reserved for exceptional conditions (the clues in the name) not used as an alternative control flow mechanism.
-
A simple 'break' would do the job, no need for 'goto'... :^) Regards Thomas
Thomas Weller wrote:
A simple 'break' would do the job, no need for 'goto'...
Except that a break doesn't break out of two for loops, just the inner one - necessitating a flag to detect whether the outer loop should be exited too. In C# this seems a legitimate usage to me. I just wish C# had JavaScript's labelled loops/breaks, yielding the following code style:
outer_loop:
while (true) {
// .. do something
inner_loop:
while (true) {
// ...
if (condition1)
break inner_loop;if (condition2) break outer\_loop; } }
Given that and fall-through in switch..case I see no need for goto.
-
That's a worse offense than a goto IMHO - exceptions should be reserved for exceptional conditions (the clues in the name) not used as an alternative control flow mechanism.
Rob Grainger wrote:
not used as an alternative control flow mechanism.
That's exactly what they are (IMHO). :-D
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Thomas Weller wrote:
A simple 'break' would do the job, no need for 'goto'...
Except that a break doesn't break out of two for loops, just the inner one - necessitating a flag to detect whether the outer loop should be exited too. In C# this seems a legitimate usage to me. I just wish C# had JavaScript's labelled loops/breaks, yielding the following code style:
outer_loop:
while (true) {
// .. do something
inner_loop:
while (true) {
// ...
if (condition1)
break inner_loop;if (condition2) break outer\_loop; } }
Given that and fall-through in switch..case I see no need for goto.
A 'labelled break' is a 'goto' alias. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Thomas Weller wrote:
A simple 'break' would do the job, no need for 'goto'...
Except that a break doesn't break out of two for loops, just the inner one - necessitating a flag to detect whether the outer loop should be exited too. In C# this seems a legitimate usage to me. I just wish C# had JavaScript's labelled loops/breaks, yielding the following code style:
outer_loop:
while (true) {
// .. do something
inner_loop:
while (true) {
// ...
if (condition1)
break inner_loop;if (condition2) break outer\_loop; } }
Given that and fall-through in switch..case I see no need for goto.
What I mean is: a 'break' would be enough to execute the 'beep bop a loola' :-D ... By the way: I'd consider a 'flag' much better than a 'goto'... Regards Thomas
-
break will only break the inner most loop! C# is not java where you could have labelled loop...
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
I know. But in the pseudocode above it will definitely execute the 'beep bop a loola'... :-D Regards Thomas
-
I like this reason as well void foobar() { // blah blah blah for(...) { // blablabla for(..) { // foo foo foo if(bar) goto end; } } end: // beep bop a loola }
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Add
&& !foo
to the for loop conditions and/or use while instead. -
That's a worse offense than a goto IMHO - exceptions should be reserved for exceptional conditions (the clues in the name) not used as an alternative control flow mechanism.
I take exception to that remark! *Bypasses his finally block due to a goto statement*
-
protected void Page_Load(object sender, EventArgs e)
{
string str = "Even exception occur again in catch block still finally block is Working";
try
{
throw new IndexOutOfRangeException();
}
catch
{
goto Hello;
throw new IndexOutOfRangeException();}
finally
{
Response.Redirect("Error.aspx?str="+ str);
}
Hello:
Response.Write("Finally Skiped!");
}http://www.codeproject.com/KB/aspnet/DotNetBulletQuestions.aspx?msg=2764693#xx2764693xx[^] A goto in a try/catch/finally block... urrrghh!
Maybe someone was just trying to test something and forgot to yank out the code? One can dream right....