Having done a fair bit of C/C++ interop stuff with C#, I would say this is definitely its standout compared to Java.
The things you mention are huge, along with "UnmanagedCallersOnly", the ability to write structs and mark them as meant to be used in interop code (see "Blittable/Unmanaged Types" proposal that was recently adopted), and the seamless "DllInterop" annotations for pulling in native external methods.
The things you mention are huge, along with "UnmanagedCallersOnly", the ability to write structs and mark them as meant to be used in interop code (see "Blittable/Unmanaged Types" proposal that was recently adopted), and the seamless "DllInterop" annotations for pulling in native external methods.
https://devblogs.microsoft.com/dotnet/improvements-in-native...
https://github.com/jkoritzinsky/runtime/blob/a5048c2fe5068e9...
The team that works on the native/interop stuff is top-notch, and they're constantly pushing boundaries and making neat improvements.
I'm more of a JVM guy, but credit is well due here.