Why VB.Net is bad

If a language is going to be loosely typed, then that’s fine as long as you know how to use it. If it’s going to be strongly typed that’s even better. So in JavaScript:

var i=1;
var j="1";
if(i==j)alert("Loose typing ahoy!");

Everything’s fine and you get an alert. And if you go:

var thingArray = new Array();
thingArray[i]="Loose typing still ahoy!"
alert(thingArray[j]);

You get the same thing.

Try something similar in C#, and you’ll get a compile error:

int i = 1;
string j="1";
if(i==j)Response.Write("Oooooh badness");

So it will never work.

In VB.Net, though, we’re in a funny middle-ground where things are sometimes the same, and sometimes different:

Dim i as Intger = 1
Dim j as String = "1"
If i = j Then
Response.Write("They're the same here.")
End If

So far, so ropey, and not that dissimilar to JavaScript. But then:

Dim thingArray as new ArrayList
thingArray.Add(i)
If thingArray.Contains(j) Then
Response.Write("They're still the same...")
End If

will never write anything out. Because despite the fact that 1 = “1”, an ArrayList that contains 1 doesn’t also contain “1” because they’re different…

It’s a cop-out of a language, I say.