I’m not trying to start an argument here, but for whatever reason, it’s typically stated that Visual Basic is case insensitive and C languages aren’t (and somehow that is a good thing).
But here’s my question: Where exactly is Visual Basic case insensitive? When I type…
Dim ss As String
Dim SS As String
…into the Visual Studio 2008 or Visual Studio 2010 IDE, the second one has a warning of “Local variable SS is already declared in the current block“. In the VBA VBE, it doesn’t immediately kick an error, but rather just auto-corrects the case.
Am I missing something here with this argument that Visual Basic is not case sensitive? (Also, if you know or care to answer, why would that be a bad thing?)
Why am I even asking this question?
I’ve used Visual Basic in many of its
dialects for years now, sometimes as
a hobbyist, sometimes for small
business-related programs in a
workgroup. As of the last six months,
I’ve been working on a big project,
much bigger than I anticipated. Much
of the sample source code out there
is in C#. I don’t have any burning
desire to learn C#, but if there are
things I’m missing out on that C#
offers that Visual Basic doesn’t (an opposite
would be VB.NET offers XML Literals), then I’d like to know
more about that feature. So in this
case, it’s often argued that C
languages are case sensitive and
that’s good and Visual Basic is case
insensitive and that is bad. I’d
like to know…
- How exactly is Visual Basic
case insensitive since every
single example in the code editor
becomes case sensitive (meaning
the case gets corrected) whether I want
it or not. - Is this compelling enough for me to
consider moving to C# if VB.NET case
is somehow limiting what I could do
with code?
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
ssandSSand see what the compiler does.EDIT Quote from Jeffrey Richter in the .NET Framework Design Guidelines page 45.