What do you want in the next version of VS/C# (part 4)

Ok. I tabulated the vote that came in after I asked everyone to contribute. It took a lot longer than I expected since I got a total of 667 (aren't I glad that isn't 666) votes come in. Here are the final results. Of course, I can't gaurantee anything based on this, but it is pretty fantastic information to hear about. Also, if you don't see a certain option listed here feel free to ask why. The main reasons are that I might have felt it was subsumed by an existing item, it's something we already have in VS2005, I didn't understand what you were asking for (even after asking for clarification), or I just missed it :-). First off, here's all the raw data:

Feature Votes Feature Votes
Edit&Continue 31 Better constraints for generics 10
Better support for nesting other languages in C# 23 Warnings for certain goto behavior 8
Better control over all code generation. 23 Better syntax for casting 8
handling of null events 22 Better mock object support 8
Tuples/Generic lists of variable length 22 Better thread debugging 8
Covariant return types 20 Delegates on properties 7
Expose the compiler with a managed API 19 Generate field/property/constructor/class/etc. 7
intellisense for indexers/conversions 18 Fix up usings 7
tell you when you're using a disposable type unsafely 18 VI mode 6
Non-null types 17 Functions in module scope/Top level functions 6
C#=Vb 16 Better MSDN documentation 6
Error correction/spell checking 16 More flexible color schemes 6
Private backing store for properties 16 Better XML serializer 6
Automatic constructor stub generation: 15 Better support for chords/keybindings 6
Pre/postconditions 15 User filtered catch handlers 6
Static import of classes 14 Method scoped variables 6
support for checking enum values 14 VS macros in C# 5
const support 14 Find code duplication 5
Support for mixins 13 Read/Edit mode 5
Virtual operators/operators on interfaces/better operators 13 IntPtr operators 5
Nicer syntax for anonymous delegates 13 API For accesing the profiler from managed code 5
Expose the refactoring engine 12 No regions on interface implementation 5
inlined array syntax 12 Warnings for implicit vs explicit implementation 3
Managed Add-ins 12 Fix up doc comments when doing a refactoring 3
special constructs for asynchronous operation 12 Method virtual by default 3
Collapse all code comments 11 Support for method groups in doc comments 3
C-omega support 11 Expose formatting/colorization engine 3
Generic properties 11 Obfuscator Api 3
Attributes on local variables and code blocks 11 Simplified iterator syntax 3
Better control over completion list (sorting and filtering) 11 Schema for XML comments 3
First class generics 11 Global exception tracking 2
Better incremental find 10 More flexible interface implementation support 2
Better constraints for generics 10 Aspects 2

In a nicer graph form, I've split it up into the 50% that have the most votes and the 50% that have the least votes. note: I'm pretty sucky at creating graphs, so if you have a better way to do it, feel free to take the data and create your own. Send it to me and I'll put it up with these :-)

One thing I learned: Never conduct a web poll by soliciting emails. It's ridiculously time consuming to collect and tabulate all votes. It's also error prone. I ended up printing out everything and checking things off one by one in order to make sure i didn't miss any votes.

As part of the vote I asked people to tell me about things they didn't want. I left out those results because there just weren't many opposing votes. I'm guessing that that's because, for the most part, everyone either wanted a feature or was just OK on it. The only features that really solicited any negative responses were some of the more controversial onces. Like E&C, C#=VB, virtual by default, and const support. However, there wasn't (in my opinion) a significant negative view on these compared to the amount of positive/uncaring views on them.

Some things that suprised me about the results:

  • I wasn't expecting "Better support for nesting other languages in C#" to be so popular. I'm guessing that people are using regex's, SQL statements and XML a lot and would like that to be a nicer experience.
  • I didn't realize how much people were annoyed with dealing with null events in C#. We didn't do any work on this and I think that was a mistake given the simple things we could have done that would have made people happier here
  • There were a lot of responses that talked about the IDisposable pattern was extremely important and how it was so easy to mis/forget the pattern. People really, really, wanted IDE support here.
  • I was expecting more interest in "virtual by default". That seems to be a very polarized issue that people have strong opinions on. I was surprised to get so few votes for it.
  • Very few people wanted a global exception handler (i.e. events whenever any exception was thrown/caught). I was expecting that to be more popular as well.

Thanks very much for letting us know about all of this. It's going to be really helpful in our future choices for C#!!