Oh wow. I do <i>not</i> like that "global using". It harkens to the auto-loading issues I've had with Rails. "Where was this defined? I dunno! It probably works here, though!!1"<p>I generally don't like a random file impacting several other files. Extension methods are ... tolerated and ... "fine" but I still feel unpleasant using them.<p>File-Scoped namespaces seem like someone's really, really tired of having nested folders and seems actively unnecessary.<p>I like natural lambda types<p>Good update on parameterless structs. I assumed that's how they worked already. I haven't used C# in 2 years; but you could do that with classes back when, so I assumed it would be the same with structs.<p>Constant interpolated strings is nice.<p>Extended property patterns is fine, just probably not for me.
C# is becoming the C++ of managed languages. I wish they would stick to a smaller set of more powerful features… like an earlier C# with hygienic macros or something.
Dumb questions: why does it seem like languages always continually add features?<p>Can a language not become "feature complete", while still improving over time?
I like it. Nothing too crazy (well except maybe the return types and attributes on lambdas that could make some ugly code), mostly quality of life improvements and stuff you expected to work in C# 9.
The most interesting feature here (though included only as a preview) is static abstract members on interfaces, which will make things like generic math possible.
Not all of these changes sound good to me. Some sound like very niche cases that I now have to make a decision about when it comes to coding guidelines because there's always going to be that one developer in our company who wants to show off, even if it's not the right tool for the job.
Is "natural types" a common term used in programming language theory? I haven't heard of it before. I tried to search it but found nothing.