Flexible - converts snippets, files, projects, solutions, and folders from C# to VB.NET
Fast - tens of thousands of lines converted from C# to VB.NET per minute
Helpful conversion comments
Excellent educational tool for C# developers learning VB.NET
Numerous conversion and formatting options
10 Second Overview
C# to VB.NET Indexer Conversion:
C# to VB.NET Lambda Conversion:
C# to VB.NET Object Initializer Conversion:
C# to VB.NET LINQ Conversion:
Code Formatting Options:
*Scroll right to see Instant VB screenshots
Q: Are the original C# files altered in any way?
Your existing code is left completely intact.
The new VB.NET project is output to the new location that you specify.
Q: Can the converter produce VB6 code?
No - only VB.NET code is produced.
Q: Do you guarantee a 100% complete conversion?
No - our accuracy is very high, but there will be
some adjustments required for all but the simplest conversions. Read the rest
of the FAQ to get an idea of a few things that are not converted.
Q: Is C# code within ASP.NET files converted?
No - ASP.NET files are not converted.
Q: What are the most common adjustments necessary after conversion?
'unsafe' code blocks and types are not converted.
VB does not allow assignments within expressions, but C# does (e.g.,
while ((x = y()) > 0) assigns a value to x as part of an
expression). Instant VB will convert some cases, but will mark other more
complex cases with a "ToDo" comment. You must manually
Most reference type comparisons are converted, but occasionally you
may need to manually change an equals sign to "Is".
The VB compiler makes these adjustment requirements obvious.
Unfortunately, many new C# features beginning with C# 7 have no equivalent in VB. This includes
'throw expressions', 'ref returns', 'ref locals', local functions, 'pattern variables', and 'switch' enhancements such as pattern expressions.
Instant VB detects these, comments out some code, and provides 'todo' notes.
VB does not allow overloading when it is based only
on the direction of the parameters (ByVal vs ByRef).
Methods overloading done this way will require renaming of the method name in VB.