No, we’re not going to look at C# 7.0. That’s ancient history. Instead, we’re going to look at the recent point releases - C# 7.1 and 7.2.
Unsurprisingly for point releases, the feature list isn’t huge, but there are a couple of very interesting new items in there. Notably, let’s pick apart “reference semantics for value types”. Firstly, what does that even mean? Secondly, let’s take a look at how this fairly major set of new features work, and how we can use this in our own apps to improve performance by reducing allocations and garbage collection overhead. Immutable structs, readonly references and of course, Span<T>, a type safe and efficient way of accessing chunks of memory. Just think - creating sub-strings without any new allocations!
And after all that, we’ll check out the preview of the big headline feature of C# 8.0 - nullable reference types. Wait, aren’t reference types already nullable?