| feature | vote | remarks |
| ---------------------- | ---- | -------------------------------------------------------------------------------------------------- |
| Implicit new | 1 | useless as far as I can tell. saves a whopping 4 characters over `var x = new MyClass();` |
| Syntax patterns | ? | need to consider some more. seems to be for pattern matching, could perhaps be a 4 or 5 |
| Switch | 3 | I could see using it from time to time |
| Null-coalescing assign | 3 | I use `myList = myList ?? new List<int>();` often enough forthis to save me a little typing |
| Indices and range | 5 | I miss Python's list/array slicing, and this is a bit like that but without allocating a new array |
I refuse to acknowledge to the lack of markdown tables on CP
I've basically stopped caring about new language features because not living in the Redmond reality distortion bubble I'm unlikely to ever do a rewrite of my current app from framework to core and MS has mostly decided to treat the former as a bugfix only platform.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
All of the listed features except for indices and range are supported in .NET 4.x, but you need to manually edit your project file to change the language version.
Index and range support can be enabled, but you need to define various classes in your own code. If you have any code which uses System.Runtime.CompilerServices.RuntimeHelpers, adding index/range support will break it.
I'll admit I've been working in .NET since the beta releases in late 2001, and when Core came out and wasn't exactly a easy migration, I was pretty upset. but I was ready to move onto a new job at that point anyway.
I avoided core until 2.2 came out and did a small side project with it. the initial learning curve of figuring out where everything was again was a bit frustrating.
when 5.0 got released and I gave it another try, and it wasn't bad this time. Haven't tried it out with a UI yet though, only console and ASP projects.
Thinking back to my old workplace where the flagship product was hovering around 250K lines of code, I do shudder a bit thinking of having to migrate that over. It would be more likely to just rebuild a new version based on 5.0, and be able to redesign to make it better. when you spend a large chunk of your life on one product, you always see better ways to handle things.
One of the various issues with .NET Core / 5 is that the WinForms designer has issues with custom control designers. The Krypton Toolkit (which I use) is affected by this. The only workaround is to multitarget .NET 4.x as well.
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
Nothing we couldn't do in C# 1.0, just a bit shorter (and in some cases less readable / takes some getting used to)
The real improvements over the years, for me, would have to be LINQ (what a game-changer!), anonymous types and tuples (alright, tuples are a shortcut too, but a huge one!).
Those really change the way I write my code.
Furthermore, improvements in (ASP).NET Core, like having a default JSON settings file instead of XML, having a built-in IoC container, having Azure extensions, etc. really makes my life a lot more simple.
And being able to use them in .NET Framework (because they're .NET Standard) also helps