I have come to really love C#. The .NET framework is so robust, so complete while at the same time providing some of the most outstanding documentation that I have ever seen (which is an interesting thing to say about Microsoft). It works well with much of the latest technologies including Speech Synthesis/Recognition, 3D Graphics API's, Security, Cryptography, GUI Development, Reflection, and even Class Meta-data or Attributes.
C# is far from being a restrictive language like Java, Reflection actually affords great power and – when used sparingly – can actually replace the need for more complex and potentially time consuming work-arounds. C# is very much a "self-documenting" language, but without being as verbose as either Java or VB (though I don't advise the literal application of this self-documenting approach). It cuts out the need for header files, and provides unparalleled compilation speeds. The Just-in-time compilation optimizes the assembly for the target machine and even operating system and the fact that it is a managed language opens the door to seamless cross-platform development and deployment and removes the need for the a host of if-defs and the maintenance of separate builds.
In the future, C# will even allow for seamless deployment of many games to the X-Box II and other consoles which will make use of XNA (well XNA is some-what ambiguous as to its actual purpose at the moment, but I take that as the jist of it). C# affords maintainability and rapid application development: two features that are imperative for any successful software solution… especial game development. Sadly the stigma of being "to slow for game development" is associated with both Java and C#, though Java has made great strides in this and C# has proven very efficient and fast with often very minimal differences in speeds from native code (other then the quick and dirty comparison tests which don't even run long enough for the JIT time to be compensated for or which perform simple computations).
I have seen Axiom, a C# port of OGRE actually run faster then its predecessor, and this speed will only grew by leaps and bounds with the advent of generics in .NET 2.0. It was tested with Axiom and resulted in a 5X FPS increase!! (not to mention all of the repetitive code which could be eliminated). The only class that I have seen to be slow in comparison to other languages implementation is the ArrayList, but this is likely due to the boxing/unboxing and will therefore be remedied in .NET 2.0. Many find C# a turn off and consider it nothing more then a proprietary, windows-only Java clone (J++ anyone?), but I find that for the most part it is implemented *very* well in both Mono and DotGNU Portable.NET.
The only thing that I could ask for is an excellent cross-platform, LayoutManager-driven, GUI library similar to that found in Java. This is largely remedied with Portable.NET's (and to a lesser extent Mono's) excellent cross-platform support for WinForms. It is also provided with C# binding for other mature cross-platform GUI solutions including wx.NET (for wxWidgets) and GTK# (for GTK+). I have found that the Visual Studio.NET to be the best IDE that I have ever encountered - and short of a couple stability issues – as productive as Eclipse. You can even write Server-side web applications with the same language and even integrate them into the same solution!!
I have worked with C# for a while and have found that it has allowed me to accomplish any given task very easily and because Microsoft was smart enough to take a page out of the book of every successful programming language (from C++ to VB Java to Perl), it has resulted in an excellent solution for every programming task that I have worked with thus far. Its excellent support for interoperability with native languages and the ability to be used with any one of the literally hundreds of .NET language makes it a very flexible solution. It is my opinion that C# and the .NET framework, will make and excellent game development solution as soon as some of the stigmas associated with it are debunked. It provides the maintainability, powerful, flexibility, and cross-platform deployment that are so critical to game developers at the moment and I think with time the speed hit will either be overcome, or rendered insignificant in comparison to productivity gained by its use. I wish to test my hypothesis and determine if C# is in fact a feasible solution for game development by continuing my work on the RealmForge GDK and I think that others should at the very least do themselves a favor and keep an open mind and give C# a try.