FAQ for Instant VB – C# to VB Converter
Q: Is the original C# project altered in any way?
Your existing code is left completely intact. The new
VB (.NET) project is written to the new location that you specify.
Q: Do you guarantee a 100% complete conversion?
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.
Q: What are the most common adjustments necessary after conversion?
- 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.
- "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.
Copyright © 1997 - 2017 Tangible Software Solutions Inc.