I started my programming in VB4.. and have been a VB fan since. And then LINQ came along and LINQ syntax in C# is so much nicer than in VB.NET, so I switched.
And most people are either switching from a languages with curly braces such as Java and/or C/C++ so it's only natural that they pick C# over VB.NET
And language support is not entirely 'the same' i.e.:
My Extensions is very handy for some tasks.
VB has late-binding support (COM, ActiveX, Javascript etc.)
VB needs an underscore for line continuation which makes spanning LINQ queries to multiline a little hard to type and rearrange.
C# has full anonymous method support while VB is only limited to single-expression lambda function only.
You cannot use unsafe code in VB, so a performance-critical application might be better off with C#
VB has the Handles
and With
statement and method-scope static variable which is handy at times.
VB has XML-literal syntax which is super-useful when creating XML-laden apps.
And with type inference, it's becomes so much easier to program in C# especially for folks who like functional programming. I used to hate having to declare the type I want twice when instantiating a variable in C# but that has been solved with var
.
.
// Can your language do this?
Dim xmlSnippet =
<someXml>
<someNode><%= localVariableHere %></someNode>
<%= For item In dataset _
Select <subNode><%= item %></subNode>%>
</someXml>
.
Dim x As New MyClass("Params") // read like an english sentence but...
MyClass x = new MyClass("Params"); // who says C is shorter than VB?
var x = new MyClass("Params"); // equal, but there're more punctuations!
In the (near) future, .NET 4.0 will brings changes that will smooth those differences, particularly VB getting multiple-statement delegates and C# getting late-binding support.
So there might be more people taking up VB when .NET 4.0 comes. But for now, the stats say it best.