Back in 2010, working at the time in a variety of languages, including VB, I asked this question on StackOverflow. In VB, you could put a range inside a switch statement, and I wanted to know how you could do that in C#. The (correct) answer at the time was that you can’t.
Fast forward just eight short years, and suddenly, it’s possible. The new feature of pattern matching in C# 7.0 has made this possible.
You can now write something like this (this is C# 7.1 because of Async Main):
static async Task Main(string[] args)
{
for (int i = 0; i <= 20; i++)
{
switch (i)
{
case var test when test <= 2:
Console.WriteLine("Less than 2");
break;
case var test when test > 2 && test < 10:
Console.WriteLine("Between 2 and 10");
break;
case var test when test >= 10:
Console.WriteLine("10 or more");
break;
}
await Task.Delay(500);
}
Console.ReadLine();
}
References
https://docs.microsoft.com/en-us/dotnet/csharp/pattern-matching
https://visualstudiomagazine.com/articles/2017/02/01/pattern-matching.aspx