C# Frequently Asked Questions

The C# team posts answers to common questions

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;

}

}

}

Published Thursday, July 22, 2004 5:50 PM by CSharpFAQ

Comments

 

Cook Computing said:

The C# switch statement does not allow you to drop through case blocks unless the block is empty. So how do you share the same code for more than one case? The C# Frequently Asked Questions blog provides the answer:class...
July 23, 2004 4:22 AM
 

m said:

asas
August 1, 2004 12:31 PM
 

RebelGeekz said:

December 28, 2004 4:54 AM
 

FAQ C# said:

May 2, 2005 11:03 AM
 

FAQ C# (par Yannick Lejeune) said:

August 23, 2005 5:14 AM
Anonymous comments are disabled

© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker