@DeathByVisualStudio:

Maybe a sentimental winner but I need to look no further than Explorer search (since Vista) & libraries (7) performance to know that C++, Native and COM can be made untolerably slow. I think C++ is best left to experts*. I just found there's IL instruction that allows zero-overhead native calls. C# already has unsafe { } and such. I think this area of C# could use improvements to reduce need for C++/CLI wrappers.

I really like that the language allows to clearly scope where the unsafe or non-verifiable stuff is and that safe is the default.

* What this means is really splitting hairs. My thinking here is that unless you know to restrict yourself to subset of C++ and specific well designed libraries then the risks/difficulties are bigger than in C#, you can't exactly just do a search for say unsafe blocks of code and understanding code of others is much more challenging when other devs can be using wholly different approach as allowed by the language. Thus if you aren't already expert in C++ then writing C++ is just imho high risk vs reward proposition over writing C#. (and I hear rewards for experts are big so by all means. But should it be the "default/preferred" language? No. C# & interop should be made faster either all over, or atleast in the unsafe blocks.