One thing I still find odd is seeing people still compare C# to C++ and vice versa, the reason this is so unusual (for me at least) is that both languages work excellent together but often comparison threads / posts are made to encourage the use of one over the other.
Using C# / C++ together reminds me of those hybrid cars that run on electric for short distances but on petrol long, or something like that.
Pros of C#++
Using the best of both languages
Spending more time working and less time comparing or feeling insecure about chosen language
Learning and improving in 2 languages
Able to work with a lot more libraries that don't necessarily have wrappers or updated ones
Cons of C#++
Compile times can suffer at times naturally because of C++
No more invites to C# / C++ dinner parties ![:( sad.png](http://public.gamedev5.net//public/style_emoticons/default/sad.png)
but, sadly, this crosses over into areas where implementation differences show up (at least, in my experience, if portability matters):
for example, .NET has C++/CLI, Mono doesn't;
.NET interfaces fairly directly with native code (easily allows calls between native and CLR code, passing data structures back and forth, ...), whereas Mono gives more limited P/Invoke functionality (call out), and otherwise requires the use of an explicit API (which is specific to Mono), ...
this would mean that implementation portability would require wrapping it (or writing a "glue generator" tool), and adding a lot of hassle.
also, Mono is a bit of a beast code-wise, and is difficult to get built on Windows (hindering a plain Mono route), ...
so, yeah, it is mostly a matter of implementations...
granted, yes, it works a lot better if portability isn't as much of a concern.
I had once looked at DotNetAnywhere, but ended up not using it.
more fun is if you want to be able to eval C# code or load it from source.
the path of least resistance in my case was mostly just to continue on in the same direction (using a mix of C and my own scripting language).