I’m somewhat of the opinion that static typed languages are closing in on being an evolutionary dead end, but let’s just say that C# is still important for the foreseeable future. That being said, what do you want for C# vNext? If we have to be constrained by static typing, I vote for making C# more like Objective C (not that I’ve ever coded in Obj C, just that it seems to have the things I want.). My little list in order (not that I expect much of it to happen) is this:
- Mixin’s. I found myself really wanting this for a framework I have in my current project. Extension methods are okay, but I’d rather make it all the way to Mixin’s. Obj C can do it as a static typed language so it’s definitely possible. Heck, you can kind of do it in JavaScript.
- Symbols. Reflection based solutions could be so much easier with Symbols. I’d love to have compiler safe equivalents to Ruby Symbols.
- Make hashes a language feature. I keep bumping into frameworks that really want to pass around hashtables. If you absolutely have to do that, I wanna do var hash = :key => “red”, :key2 => “green” in one line of code. Somebody recently commented that object initializers might be a decent compromise.
- Automatic delegation ala Ruby or Objective C.
- Metaprogramming! Method Missing magic! I’m not holding my breathe on this one because it sounds like a bridge too far for me. Give me metaprogramming and mixins and I think we can do AOP like things with less effort.
- Everything is virtual by default to make mocking easier
Anyway, what’s your wish list?