Mono reimplements C# and the .NET Framework pretty well.
"pretty well" isn't good enough. Until it can implement it perfectly, it's not going to be stable enough for every day use.
That's not the fault of Microsoft, C# is an EMCA standard. They have the documents, it's up to them to implement it.
@Sidoh: I have not messed with Silverlight personally (Myndfyre has), but I can already tell you it's better for the Web. It's an open platform, as opposed to Flash which has yet to deliver a Linux 64 Bit player.
Silverlight1.1 also is way more powerful than Flash could ever dream of becoming, due to it being powered by the .NET Framework.
@Camel:
What part of ".NET Compact Framework" escapes you? It is certainly possible to develop .NET Applications on Windows Mobile phones, and it has been done with great success.
Microsoft has even released portions of the .NET Framework (All you need to get started on the road to implementation when used in conjunction with C# EMCA Standard) downloadable under a Microsoft Shared Source License.
You know, just so we're clear it's the lack of initiative by third parties and not the fault of Microsoft.
Honestly, Java was religiously closed source until recently what's with the change of heart and opinion about them all of a sudden? .NET has been portable for the beginning.
It's a flawed argument, if you're going to blame .NET/C# for Portability issues, they all apply to Java as well.