Short Walks - C# Pattern Matching to Match Ranges

February 17, 2018

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");
            case var test when test > 2 && test < 10:
                Console.WriteLine("Between 2 and 10");
            case var test when test >= 10:
                Console.WriteLine("10 or more");
        await Task.Delay(500);


Profile picture

A blog about one man's journey through code… and some pictures of the Peak District

© Paul Michaels 2022