# how to use switch case for a range of number

### Question

• As above...  could this statement work ?  case (0 - 500)
```public void Switch(int num)
{
switch (num)
{
case (0-500):
// belong to 0-500;
break;
case (501-1000):
// belong to 501-1000;
break;
}
}```

Saturday, August 01, 2009 3:37 PM

• As long as it is a range with a constant interval, you can map the range to an integer:

int range = (num-1) / 500;
switch (range) {
case 0: break; // 1-500
case 1: break; // 501-1000
// etc...
}

if/else for non-constant intervals.

Hans Passant.
• Marked as answer by Tuesday, August 04, 2009 5:00 AM
Saturday, August 01, 2009 5:24 PM
• You can't really do that with a switch.

You can do:

if (num >= 0 && num <= 500) { ........}
else if (num >= 501 && num <= 1000) {.............}
John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com
• Proposed as answer by Sunday, August 02, 2009 7:34 PM
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 3:50 PM
• You can do it with small ranges of numbers like so:

```switch (myInt)
{
case 0:
case 1:
case 2:
// do something
break;
etc...
}```
But I definately wouldn't recommend that for 500 of em.
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 4:00 PM

See the same question and answer here:

VB can do it but not C#. People suggested using if/else.

Oh, by the way, (0 - 500) is an expression and
(0 - 500) = -500

John Chen -- See my team blog: http://blogs.msdn.com/vsdata
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 4:01 PM
• Hi,
After I see all this answers there is no comment they are right you can't, so the best solution With such large ranges it is easier to use if - else if statements.

Thanks

My Blog
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 4:59 PM

### All replies

• Have you tried it?  Posting takes longer than testing in the IDE.
Saturday, August 01, 2009 3:48 PM
• You can't really do that with a switch.

You can do:

if (num >= 0 && num <= 500) { ........}
else if (num >= 501 && num <= 1000) {.............}
John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com
• Proposed as answer by Sunday, August 02, 2009 7:34 PM
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 3:50 PM
• You can do it with small ranges of numbers like so:

```switch (myInt)
{
case 0:
case 1:
case 2:
// do something
break;
etc...
}```
But I definately wouldn't recommend that for 500 of em.
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 4:00 PM
• JohnWein, that doesn't work in C# unfortunately. The switch only deals with constants

John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com
Saturday, August 01, 2009 4:00 PM

See the same question and answer here:

VB can do it but not C#. People suggested using if/else.

Oh, by the way, (0 - 500) is an expression and
(0 - 500) = -500

John Chen -- See my team blog: http://blogs.msdn.com/vsdata
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 4:01 PM
• JohnWein, that doesn't work in C# unfortunately. The switch only deals with constants

John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com

What doesn't work in C#?  You can certainly write code that doesn't work in the IDE.  Try it.
Saturday, August 01, 2009 4:06 PM
• Read the documentation here on switch

```switch (expression)
{
case constant-expression
:
statement
jump-statement
[default:
statement
jump-statement]
}```

John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com
Saturday, August 01, 2009 4:13 PM
• Read the documentation here on switch

```switch (expression)

{

case constant-expression

:

statement

jump-statement

[default:

statement

jump-statement]

}```

John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com

If this post is for my benefit, read my original post in this thread.  The OP should have been able to answer his question without posting it to a forum.  If you need assistance start a new thread.
Saturday, August 01, 2009 4:36 PM
• Hi,
After I see all this answers there is no comment they are right you can't, so the best solution With such large ranges it is easier to use if - else if statements.

Thanks

My Blog
• Marked as answer by Tuesday, August 04, 2009 5:01 AM
Saturday, August 01, 2009 4:59 PM
• It wasn't directed at you JohnWein, it was meant for all, generally speaking.

John Grove - TFD Group, Senior Software Engineer, EI Division, http://www.tfdg.com
Saturday, August 01, 2009 5:08 PM
• As long as it is a range with a constant interval, you can map the range to an integer:

int range = (num-1) / 500;
switch (range) {
case 0: break; // 1-500
case 1: break; // 501-1000
// etc...
}

if/else for non-constant intervals.

Hans Passant.
• Marked as answer by Tuesday, August 04, 2009 5:00 AM
Saturday, August 01, 2009 5:24 PM
• As long as it is a range with a constant interval, you can map the range to an integer:

int range = (num-1) / 500;
switch (range) {
case 0: break; // 1-500
case 1: break; // 501-1000
// etc...
}

if/else for non-constant intervals.

Hans Passant.
Good logic.
Tuesday, November 11, 2014 12:25 PM