Possible Duplicate:
C# switch variable initialization: Why does this code NOT cause a compiler error or a runtime error?
In this switch statement (which to my surprise compiles and executes without error), the variable something is not declared in case 2, and case 1 never executes. How is this valid? How can the variable something be used without being declared?
switch(2){
case 1:
string something = "whatever";
break;
case 2:
something = "where??";
break;
}
That's because a switch statement is scoped across cases. Therefore, when the switch statement is originally processed it defines a variable named something and would have its default value ... in this case null.
And to be more precise, when the IL is generated, a variable is available in scope for any case at or below its definition. So, if a variable is declared in the second case it's not available in the first case but would be available in the third case.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With