Jeremy Todd said:
Unfortunately, there's more to it than just the style of the languages.
There are some things you can do in C# that you just can't do in VB, and
vice versa. For example, VB allows you to have a method with any scope
and
name implement an interface member (the famous example being "Close"
implementing IDisposable.Dispose). It also features automagical event
binding with the Handles keyword, which eliminates a lot of error-prone
bookkeeping.
Both of these I personally dislike. It makes little difference to me if I
have to locate all methods that reference an event to remove the event
binding(I assume handles is capable of that, at any rate) or if I have to
locate the one method inwhich I do my code-time local bindings, its pretty
likely going to be the same amount of work. As for renaming interface
methods...that just seems to me to be a very undesirable choice to make, if
for no reason other than to ease up on confusing the next coder working on
the project or someone who inherits from the class. IDisposable.Dispose is
named Dispose, not Close.
On the other hand, it's been announced that C# will feature generics in
Whidbey, which is something I would really, really like.
Edit-and-continue
I don't care so much about. I don't miss it.
VB will have generics as well(syntax, last I heard was Class X(Of String),
along with partial classes. Generics would lose alot of their thunder if VB
& MC++ didn't support them. The primary distinguishing features in C#, as I
understand it, are anonymous methods and iterators, plus a couple other
little bits(fixed sized struct members, global namespace operator, another
thing or two I can't remember right now, I also don't know if VB is gaining
the same features or not).
Up until recently, the built-in XML commenting feature in C# was a big
deal, but now there are add-ins that will do the same in VB. VB's
pointing
out compiler errors in real time is a huge plus for me, too.
XML comments are expected in whidby for both VB & MC++ I think, not entirely
sure on MC++.