var names = LookupName(id);
WriteLine($"found {names.first} {names.last}.");
It's leaky and should simply use the deconstructing syntax instead.I'm on the fence about the ref returns. It can lead to some fantastic performance improvements and enable otherwise unusable datastructures. But is C# really a language you want if that is important to you. Why not go all in a use a lib in C or C++ for the critical parts of the code?
I still miss better immutability support, and probably most of all, ability to declare something at non-nullable.
But that said, the update is a fantastic update to an already good language.