Talon: C# isn't all that different imho. Especially if you have a background in C or Javascript. I always thought of it as a type-safe version of Javascript. Granted, some of the LINQ and Lambda syntax can be a bit daunting, but you get used to it. Speed-wise, uscript scripts compile to a mono/.NET assembly, and so do the…
Since the performance is the same regardless of what scripting language you use (This has been officially confirmed AFAIK) I usually just use Unityscript (Javascript) since most Unity examples are in javascript.
Just add #pragma strict at the top of your .js scripts to switch off dynamic typing. Voila, easy to debug unityscript. I'm learning C# coming from an as3 background though, since it seems like a more generally useful language overall. Only so much room in my poor artist brain for computer languages.
C#! Very clean language and very easy to learn. And then there's this badass stuff like events and delegates, LINQ, Generics (although you can use those as well in UScript I think), etc...
It's easier to write slower code with C#. No type checking means that sometimes there might be hard to catch bugs. Not a big difference, but I like the more clearer code that C# forces you write.
c# + Visual Studio. c# may be a little more daunting but the Intelisense more than makes up for it. good autocompletion and typed variables remove a massive number of potential bugs from your code.
I believe you can only do proper hash tables in C# correct? There is a hacked version you could do in Java as well but not as efficiently. Correct me if I'm wrong.