Should development of a new application be in C# or VB.NET?
How can we decide which language to use when there is no customer or resource requirements?
Is it dependent on the flavor which we like the most?
Should development of a new application be in C# or VB.NET?
How can we decide which language to use when there is no customer or resource requirements?
Is it dependent on the flavor which we like the most?
Yes, it really does depend on what language your developers are proficient in and/or which they prefer. Personally, C# all the way as I can't stand VB syntax.
On another note, why just C# and VB.NET - if there are no requirements, why not any other language?
There are more resources and sample code around C# than VB.NET, and a larger community around C# (thus more developers to hire).
But both languages are equal in power and both languages are likely to live and evolve in equal pace for a long time.
Pick the language you are most comfortable with. If you like them equally well, pick C#.
My vote is with C# - largely that's due to personal experience and familiarity with the language, however in general more people seem to code in C#, which means more example code etc... on the internet.
If I have the choice I pick C# due to my better fluency in this language.
I think the first thing you should look at is which you are most comfortable with. What competence does your company have? As has been mentioned, there is a lot of supporting documentation around C# and a large community has sprung up around it. If you have the time and it is acceptable though, it might be a good idea to develop you skills in the language you are least proficient in, but I doubt your client would like that. :)
OK, I love VB.NET but, as you said, many developers and many office colleagues work on it so I will also go with C#.
I developed in both language for years and if it doesn't depend on the wishes or coding guidelines of the client I go for C#. The reason for this is that during my master degree studies I was educated in C and C++ and as an ASP.NET developer I simply like to have the syntax of my code behind resemble what I type in for the client part. Javascript and C# have the same syntax like way of working so my mind doesn't constantly have to switch between VB.NET and javascript syntax.
I'd chosen C# because of:
I maintain an existing VB6 application, but I'm developing new applications in C# instead of VB.Net. The problem I have with VB.Net is that the syntax is too similar to VB6. For me, it's just hard to make a clean break and not fall back into writing VB6 syntax (as others have mentioned).
I especially had problems when porting a VB6 app to .NET. Instead of thinking about how I would rewrite it to work in .NET, I would think about what I needed to copy, paste, then modify. It's a completely different mindset. It's hard to describe, but I felt like I wasn't working with my own code and that I didn't fully understand was going on with the program, even though I wrote the original. So about 2000 LOC into the port, I started all over again in C#. After that, I was at least 2X more productive.
If you are assembling a team just for this project and intend to support it in the future, you should think of how easy it will be to find other developers that are proficient in the same language if changes are needed at a later time.
I generally like to defend VB.NET when it's being picked on (as it is here), because it is indeed fully capable and expressive as a language and you can accomplish pretty much anything in VB.NET that you can in C#. To say that one is "more readable" or "more intuitive" than the other is undeniably 100% subjective.
That said, I don't agree that the two languages are equally powerful. At least not in all but the most up-to-date versions of the languages.
For instance, if you are using Visual Studio 2008 and thus Visual Basic 9, the following are capabilities of C# that VB.NET does not have:
yield
keyword (VB.NET actually still doesn't have this, I believe)With this in mind, if you don't really have a strong preference either way, I'd go with C# for a new project unless you're using Visual Studio 2010 with the VB10 compiler. It is more or less the same, but with a few additional (and very useful) capabilities.
One exception might be if you're doing a lot of XML serialization, in which case VB.NET's support for XML literals is quite handy.
The things that I know VB.NET does much, much better than C#:
The things that C# does much better:
I use C# due to the fact that most of my experience with programming languages revolve around those with C-like syntax (Java, PHP, C++, etc). Because of this, I'm more comfortable with C#.