[导入]Why does my switch statement works differently?
C# does not support an explicit fall through for case blocks (unless the block is empty)
For an explanation of why, see Why is the C# switch statement designed to not allow fall through, but still require a break? on MSDN
The following code is not legal and will not compile in C#:
switch (x)
{
case 0:
Console.WriteLine(x)
// do something
case 1:
Console.WriteLine(x)
// do something in common with 0
default:
Console.WriteLine(x)
// do something in common with 0, 1 and everything else
break;
}
In order to achieve the same effect in C# the code must be modified as shown below (notice how the control flows are very explicit):
class Test
{
static void Main()
{
int x = 3;
switch (x)
{
case 0:
// do something
goto case 1;
case 1:
// do something in common with 0
goto default;
default:
// do something in common with 0, 1, and anything else
break;
}
}
}
文章来源:http://blogs.msdn.com/csharpfaq/archive/2004/07/22/191787.aspx