• Saves Valuable Time
  • Trusted Accuracy for 12 Years
  • 15-Day Money-Back Guarantee

C# to VB.NET Converter – Instant VB

Instant VB produces great VB.NET code, saving you hours of painstaking work and valuable time.

Try the Free Edition

  • Free
  • High-quality conversion
  • Convert projects up to 2000 lines
  • Convert snippets up to 200 lines

Purchase the Premium Edition

  • $159 US (15-day money-back guarantee)
  • High-quality conversion
  • Unlimited project conversion length
  • Unlimited snippet conversion length

10 Second Overview

*Scroll right to see Instant VB in action!

Key Benefits

The Most Comprehensive C# to VB Converter

Note: "unsafe" code blocks and types are not converted.


Your existing code is left completely intact.  The new VB.NET project is written to the new location that you specify.

No. Only VB.NET code is produced.

No.  Our accuracy is the highest in the industry - over 99% (99.98% on Microsoft's "101 C# Code Samples"), but there will be some minor tweaks required in all but the most trivial projects.  Read the rest of the FAQ to get an idea of a few things that are not converted. It is critical to try some of your own code when comparing C# to VB converters since it is very easy to create a converter that does very well on a specific set of projects, such as Microsoft's published 101 C# code samples.  Most converters, including Instant VB, are regularly tested against these sample projects.  The most important criterion is how well the converter does on your own code, and this is where Instant VB will clearly show its superiority.

The converter does not convert 'unsafe' code. There is no reasonable equivalent in VB.NET. These sections are commented in the conversion output.

We convert all C# features that have VB equivalents. Unfortunately, there are some features, especially starting with C# 2017, that simply have no equivalent. These include: local functions, case statement pattern variables, case statement 'when' conditions, pattern variables in 'is' expressions, tuple deconstruction declarations, 'ref return' methods, 'ref locals', and throw expressions.

  • 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 adjust these.
  • 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.
  • "unsafe" code blocks and types are not converted. 
  • Files with cshtml extensions (using 'Razor' syntax) are not converted.
  • 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.
  • Universal Windows Platform apps (formerly 'Metro', 'WinRT', or 'Windows Store' apps) are converted, but the converter cannot discover type information which is inside .winmd files. There are a couple of possible work-arounds, but they will not work consistently for all users. This means that there will be more manual adjustments required for Universal app conversions, until Microsoft provides a coherent approach to reading .winmd files from desktop applications, such as our converters.

Additional Resources

VB.NET and C# equivalents chart

C# – Visual Basic Bilingual Dictionary

C# to VB.NET conversion tips

Copyright © 1997 – 2017 Tangible Software Solutions Inc.