Microsoft is trying too hard to make C# answer to every single technology trend, adding dynamic type, asynchronous methods, etc. In most cases you wind up with a working but much worse alternative to the real thing. For example, here's how you create an anonymous function that returns a string in C#:
(new Func<string>(() =>
{
return "foo";
}))();
That's pretty awful and as a result you rarely see anyone doing stuff like that, whereas with JavaScript it's used regularly. But for C# it's another checkbox that they can say they support.
C# should stick with trying to be the best statically typed compiled object oriented language.
C# should stick with trying to be the best statically typed compiled object oriented language.