I'm probably in the minority, but I'm not really a fan of these new changes. Some are OK, but a lot of them seem likely to be abused more than used appropriately.
p.GetCoordinates(out int x, out int y);
vs var coordinates = p.GetCoordinates();
out parameters should be deprecated, not enhanced.Patterns are OK, but switch statement with patterns...why? I'd much rather do something like this:
class ShapeHandler()
{
public void Handle(Circle c)
{
...
}
public void Handle(Rectangle s)
{
...
}
}
The argument for Tuples:> Custom-built transport type for every method: A lot of code overhead for a type whose purpose is just to temporarily group a few values.
I disagree. Before you know it, that 'temporary group' becomes a first class citizen and deserves its own type. If it's code overhead, I'd rather the IDE/tooling help me with it than it be built into the language.
Overall these changes make the language more expressive which is good. I just fear they will be abused more often than not.