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