C# is Microsoft's "innovation" of Java. It is a hybrid of Java, C++ and a few true innovations. But like everyone else that indulges in bashing Microsoft, I will overlook the true innovations and talk about the negative stuff. Okay, one true innovation worth mentioning is the use of the concept embodied in the Common Language Runtime and the schema-based wonders of Intellisense. Very cool, but the memorable stuff, day to day, is not so praiseworthy:
-
Every case statement in a switch() structure must have a break statement.
-
The use of default values for named parameters is not supported (it's in VB.NET).
-
The with() structure (from the world of ECMA standards and VB.NET) is not supported.
-
Debugging ASP.NET pages is not "intuitive" (not a C# issue but worth mentioning).
-
As of VS.NET 2003 the code editor is far less interactive than the VB.NET editor.
My theoretical understanding of Java and my experience with JavaScript helped me to get up and running in a matter of weeks with C#. I prefer to use C# for all coding except the code behind Windows Forms. Visual Basic.NET seems more suitable for the RAD UI experience. For example, the AddressOf keyword makes events wiring easier and I have sentimental connection to my early days building form in MS Access 2.x/97 with VBA.
Visual Basic is the pet language of Bill Gates. It will be here to stay for sentimental and memorial feelings---let alone any perceptions based on logistics.
Nevertheless, generally I prefer brackets rather than Begin and End blocks. I expect to be outnumbered and outgunned when it comes to this argument. As of this writing it takes more lines of code to express myself in VB.NET than in C# but Microsoft is working on this. The September 8 .NET Rocks! show features the VB.NET team addressing these issues:
http://www.franklins.net/dotnetrocks.asp
After the syntax is under the belt, I recommend looking at "Visual C# How-To Resources" at:
http://msdn.microsoft.com/howto/c.asp