I think this is most debatable issue in .NET community. Both use the same framework and speed is also very much equivalents. But still let’s list down some major differences between them.
- Has support for optional parameters which makes COM interoperability much easy.
- With Option Strict off late binding is supported.
- Legacy VB functionalities can be used by using Microsoft.VisualBasic namespace in VB.NET.
- Has the WITH construct which is not in C#.NET.
- The VB.NET parts of Visual Studio .NET compiles your code in the background. While this is considered an advantage for small projects, people creating very large projects have found that the IDE slows down considerably as the project gets larger.
Advantages of C#.NET
XML documentation is generated from source code but this is now been incorporated in Whidbey.
- Operator overloading which is not in current VB.NET but is been introduced in Whidbey.
- Use of this statement makes unmanaged resource disposal simple.
- Access to Unsafe code. This allows pointer arithmetic etc, and can improve performance in some situations. However, it is not to be used lightly, as a lot of the normal safety of C#.NET is lost (as the name implies).This is the major difference that you can access unmanaged code in C#.NET and not in VB.NET.