Presentation: C# Today and Tomorrow



5:25pm - 6:15pm

Day of week:



Key Takeaways

  • Hear how C# is evolving and how the teams works in the open.
  • Gain an understanding of the future features and changes to the langauge.
  • Learn directly from the person leading the team building C#.


C# can be developed and run on more and more platforms, and thanks to the “Roslyn” language engine you can increasingly make your own tooling for it. C# 7 is set to embrace several new features for working better with data, such as tuples and pattern matching. Come see what’s in store for C#!

Note: This is a portion of a full podcast with Mads Torgersen. You can read the full show notes  and listen to the podcast on You can also subscribe to all future podcasts by following us on our RSS feeds on InfoQ, SoundCloud, or on iTunes.


Obviously your talk is about C#, but what is kind the main goal for this one?
C# is under pretty rapid evolution as a language. I am going to focus on both C#, and the technologies surrounding it. There is a strong emphasis on the language itself, and how we are evolving it. I want to make sure that I talk about it in terms that you don’t have to be an up-to-date C# developer already to get something out of the talk.
I think with C# being available on many more platforms and in many more contexts than it used to be (just a couple years ago) and us pushing even further on that, there are a lot of people for whom all of a sudden it’s an option to use C#. I want to make sure that if that is your situation, you can get something out of this talk . I want to make sure you can get a good feel for where C# is as a language, and what kinds of innovation are going on there.
The .NET track at QCon tends to be a new one for us. There is definitely a huge volume of JVM developers that are there. What might a JVM developer pick up on by coming to your talk?
Ideally, of course, they would get so enamored that they would go and fire up .NET for their next project. But, short of that, I think it’s good to get a glimpse into a parallel world (if you will), maybe one that has different kinds of innovation. I might be as un-modest as to say maybe more innovation in the language space, and have that inform your choices, maybe even within the JVM world. On JVM, there is more than just Java and including languages like Scala (that even we are inspired by as we evolve C#). Just opening eyes and help to know what’s out there. Maybe you can use it as an opportunity to get better tools or become a better programmer.
Now that doesn’t mean you are not going to feed the C# developer’s soul, right?
I am certainly going to speak to the hopefully many C# developers that are in the room. I am not just going to be there to try to capture new developers. I know people don’t go to conferences to be lured over to a parallel world. I’m sure that most of the people in the room are going to be C# developers, and I am going to make it exciting for them as well.
What are the same of the bits that you will be jumping into in your talk?
We have been playing with a lot of different potential features for C# and some that we are in particular coalescing around, that immediately clicked with a lot of people when we presented them, are tuples. Language support for tuples that will make it absolutely smooth to have multiple return values, to have keys and hash tables that are multi-valued and just hash correctly and all that. All that will have a completely language integrated feel to it.
That is bringing us up to par with some modern languages and functional languages in particular on that aspect. It seems like a small thing. I mean there is nothing in there you couldn’t do by declaring your own types or whatever, but it gives a massive simplification of your code.
What will C# 7 be known for? Is 7 the language of tuples?
The overall theme here is features that make it easier to work with data, being able to shunt little temporary groups of values around without having to declare transport types of whatever. That’s part of that. Another thing that I think is big is that increasingly within a distributed computing world, the object model with stateful objects with virtual methods on them and little hierarchies, that doesn’t jive so well with data crossing the wires, right?
The same data shows up in different places and you will want to do different things with them, and rather than having functionality on the inside like you do with objects, you want to work with data structures from the outside more, and if you have hierarchies of data or whatever, you want to be able to do that shape dependant behavior from the outside that you get with virtual methods.
So that’s a long way of leading up to have some form of pattern matching where among other things, that facilitates essentially type switching that you can easily write data or control structures that will switch depending on the shape of your data and make that more declarative. That is the thing that is foundational to functional languages, and we are learning.

Speaker: Mads Torgersen

Runs C# Design Process & Maintains Language Spec @Microsoft

Mads leads the C# language design process at Microsoft, where he has been involved in five versions of C#, and also contributed to TypeScript, Visual Basic, Roslyn and LINQ. Before he joined Microsoft a decade ago, he worked as a university professor in Aarhus, Denmark, doing research into programming language design and contributing to Java generics.

Find Mads Torgersen at

Similar Talks


Monday, 13 June

Tuesday, 14 June

Wednesday, 15 June