David,

Try putting braces in:
     switch (x)
            {
                case 7:
{
                    string foo = "a";
                    break;
}
                default:
{
                    string foo = "b"; // Compiler not happy because foo
already declared within the switch scope
                    break;
}
            }

David

"If we can hit that bullseye, the rest of the dominoes
 will fall like a house of cards... checkmate!"
 -Zapp Brannigan, Futurama


On 4 June 2013 12:15, David Burstin <david.burs...@gmail.com> wrote:

> Hi folks,
>
> I was wondering if someone could explain the logic of the following in c#:
>
> Using If-Else:
>
>             if (x == 7)
>             {
>                 string foo = "a";
>             }
>             else
>             {
>                 string foo = "b";  // No problem declaring the string here
>             }
>
> Using Switch:
>             switch (x)
>             {
>                 case 7:
>                     string foo = "a";
>                     break;
>                 default:
>                     string foo = "b"; // Compiler not happy because foo
> already declared within the switch scope
>                     break;
>             }
>
> I understand that the scope for the second example is the entire switch
> statement, but why does that need to be the case (pardon the pun)? Is it
> just because of the ability to fall through from one case statement to the
> next (by omitting the break)?
>
> Just as a comparison, the compiler has no problem with the following in VB:
>
>         Select Case x
>             Case 7
>                 Dim foo As String = "a"
>             Case Else
>                 Dim foo As String = "b"
>         End Select
>

Reply via email to