>>12
Why is Mono not a viable CLR? It's true they usually go a step before the official MS implementation, but I don't think we'll see big C# changes in the next years, and Mono mostly implements .NET 4.0, the actual version.
And take a look at MonoTouch for iOS or Android. It compiles apps to native code using LLVM I think. So C# right now is a fine choice as a language with the base APIs. The problem is cross-platform UI APIs: Mono guys don't want to port the Windows-dependant APIs (and IMO, it's the right decision. It's better than having a cross-platform UI API like Swing for Java that looks like crap and it's slow as fuck).