Way back in December I wrote this post about why I chose to use .NET for ChimSoft, and how I am using Visual Basic .NET. I didn't really compare and contrast C# vs Visual Basic except to say that it seemed most people were picking C# because it's "more manly".
When I first started transitioning to .NET, I learned most of the ins and outs in C#, but because of our architecture at work, we used Visual Basic .NET. VB.NET kind of became habit, so I used it at home, but I took it for granted that C# was pretty much just like VB.NET, except slightly different syntax.
Well, I hadn't really touched C# in detail for a while, so I felt I was getting a little rusty with it. Plus everyone and there mother was using it, so I wondered if maybe I was missing out on something. I WAS missing out on something it turns out, a world full of headaches.
I should mention first that I was raised learning C. It was the first language I learned in high school (we didn't have programming classes, so I took an independant study where I just bought a C book). From there I moved on to C++ in college, with a touch of Java there at the end. So I'm more then versed in the "tough" languages, and Joel's pointer arithmetic test doesn't seem like a big deal. But I must say, I have been extremely spoiled with VB .NET.
Switching back to C#, suddenly I have to worry about case sensitivity again, int's not implicitly casting to strings, and arrays that have to be explicitly sized! Classes that don't allow optional parameters, properties that don't allow a parameter to "get" besides an index... it turns out C# is dramatically more different then Visual Basic .NET then I remembered.
So, I was originally going to develop the next SearTech app entirely in C# (despite already having a ton of code to draw on in VB... i know), but now I'm reconsidering. It's taking me 4 times as long to develop anything, and I can probably cut that down to two once I remember to use all the C# particulars, but there is still extra code involved in casting, and different properties from library functions etc... C# makes me happier from a nerd point of view with it's strictness and curly braces, but from a practical point of view I gotta ask why it seems most people are using C# when there seems to be a "shortcut" done for you in VB.NET. Is using a non-embarassing language that important, or am I missing some great thing about C#?