Is VB really case insensitive?

The difference between VBA and VB.NET is just because VB.NET compiles continuously in the background. You’ll get an error when you compile the VBA.

Like Jonathan says, when programming you can think of VB.NET as case-insensitive apart from string-comparisons, XML, and a few other situations…

I think you’re interested in what’s under the hood. Well, the .NET Common Language Runtime is case-sensitive, and VB.NET code relies on the runtime, so you can see it must be case-sensitive at runtime, e.g. when it’s looking up variables and methods.

The VB.NET compiler and editor let you ignore that – because they correct the case in your code.

If you play around with dynamic features or late-binding (Option Strict Off) you can prove that the underlying run-time is case-sensitive. Another way to see that is to realise that case-sensitive languages like C# use the same runtime, so the runtime obviously supports case-sensitivity.

EDIT If you want to take the IDE out of the equation, you can always compile from the command-line. Edit your code in Notepad so it has ss and SS and see what the compiler does.

EDIT Quote from Jeffrey Richter in the .NET Framework Design Guidelines page 45.

To be clear, the CLR is actually
case-sensitive. Some programming
languages, like Visual Basic, are case
insensitive. When the Visual Basic compiler is
trying to resolve a method call to a
type defined in a case-sensitive
language like C#, the compiler (not
the CLR) figures out the actual case
of the method’s name and embeds it in
metadata. The CLR knows nothing about
this. Now if you are using reflection
to bind to a method, the reflection
APIs do offer the ability to do
case-insensitive lookups. This is the
extent to which the CLR offers
case-insensitivity.

Leave a Comment