August 30th, 2016

New C# 7.0 features in Visual Studio “15” Preview 4

Over the past couple of previews, new C# language features have been trickling in, but Preview 4 marks a point where the majority of C# 7.0 are now available.

Here’s a code sample that uses a good number of these features, and that works in Preview 4 today:

class Program

{

    static void Main(string[] args)

    {

        object[] numbers =

            { 0b1, 0b10, new object[] { 0b100, 0b1000 },   // binary literals

             0b1_0000, 0b10_0000 };                        // digit separators

        var (sum, count) = Tally(numbers);                 // deconstruction

        WriteLine($"Sum: {sum}, Count: {count}");

    }

    static (int sum, int count) Tally(object[] values)     // tuple types

    {

        var r = (s: 0, c: 0);                              // tuple literals

        void Add(int s, int c) { r = (r.s + s, r.c + c); } // local functions

        foreach (var v in values)

        {

            switch (v)                                     // switch on any value

            {

                case int i:                                // type patterns

                    Add(i, 1);

                    break;

                case object[] a when a.Length > 0:         // case conditions

                    var t = Tally(a);

                    Add(t.sum, t.count);

                    break;

            }

        }

        return r;

    }

}

For a full write-up about tuples, deconstruction, pattern matching, local functions, and the rest of C# 7.0, head over to the .NET Blog.

Earlier versions of some of these features were shown at Build 2016.

Happy hacking!

Mads Torgersen, C# Language Program Manager @MadsTorgersen

Mads leads the design of the C# language. During his 11 years at Microsoft he also contributed to Typescript, Roslyn, Visual Basic, and LINQ. Before that he was a professor at Aarhus University, doing research on programming languages and type systems.

Author

Visual Studio has evolved from a simple tool bundle into an intelligent, all-in-one development environment. With support for coding in any language on any device, integrated AI to streamline workflows, and seamless cloud scalability, it empowers developers to innovate, deliver faster, and build the future.

0 comments

Discussion are closed.