Extremely responsive, personalized customer support
Easy to use
Produces helpful notes, warnings, and 'to do' comments
Excellent learning tool for those new to C#
The Most Comprehensive VB to C# Converter
Converts all versions of VB.NET code
Evaluates all referenced assemblies and .NET projects in order to resolve external references more completely
Numerous conversion and formatting options
Includes enhancement options to correct common VB.NET coding mistakes
Accurate LINQ query VB to C# conversion
Converts VB.NET Case statements with range conditions
Superb conversions from VB to C# for all types of arrays in any of the numerous VB styles
Excellent conversions of event handlers from VB to C#
Handles the numerous coding alternatives and ambiguities of VB.NET code
Flawless conversion from VB to C# for all aspects of inheritance and interfaces
Converts VB6-style On Error GoTo statements from VB to C#
Converts ASP.NET script (aspx, asmx, ascx, ashx, and asax files) from VB.NET to C#
Converts ASP.NET 'code-behind' files (aspx.vb files) from VB.NET to C#
Converts all of VB.NET's quirks: modules, local static variables, function names used as temporary variables, and type character suffixes
Allows custom replacement of strings in the final converted code
Accurate even with poorly formatted VB.NET code
Q: Is the original VB.NET project altered in any way?
Your existing code is left completely intact. The new C#
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 Visual Basic 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 VB
to C# 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 VB
code samples. Most converters, including Instant C#,
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 C# will clearly show its superiority.
Q: Does Instant C# convert VB6 projects to C#?
No. The most effective and safest way to get from VB6 to
C# is to use an upgrade tool (3rd party or the VS 2008 Upgrade Wizard) on your
VB6 code, and then use Instant C# on the resulting VB.NET code.
Q: How are methods with optional parameters converted?
By default, we convert to C# optional parameters (available since C# 4), but we offer
an option to convert to overloaded methods.
Q: How are classic VB.NET Collections handled?
Instant C# inserts a helper class to replicate the behavior of the VB Collection class.
Q: How are classic VB.NET string functions handled?
You have the option of leaving them as is (via reference to the
Microsoft.VisualBasic namespace), or converting some of them to
their closest .NET equivalent string method. Note that this may
be risky if you are depending on some of the very strange quirks
of the classic VB string functions (e.g., Left(x, 2) returns an
empty string if x is unassigned, while .NET appropriately raises
an exception when x.Substring(0, 2) is attempted).
Q: Are case statements with range expressions handled?
Yes, VB 'Select Case' blocks containing range expressions are
converted to C# 'if-else' blocks. Other 'Select Case' blocks
are either converted to C# 'switch' statements if the
expressions are constant (a requirement in C#) or to C# if-else
Q: What are the most common adjustments necessary after conversion?
If the VB project did not have 'Option Strict On' set, then you'll
likely have a number of cases where different types are compared
with each other - these may need adjustment.
Although most On Error GoTo statements are
converted, some elements of classic VB unstructured error
handling (On Error Resume Next, On Error GoTo -1, etc.) are not
converted by Instant C#. These statements are marked as a
'ToDo' task. Also, all references to the VB Err object are not
converted and marked as a 'ToDo' task.
Some references to the Microsoft.VisualBasic
namespace are left intact (the code will run via
references to the .NET Microsoft.VisualBasic namespace). You have the
option of converting many of the .NET Microsoft.VisualBasic
methods which have .NET equivalents, but in general Instant C#
does not rewrite functionality in the .NET Microsoft.VisualBasic
Files with vbhtml extensions (using 'Razor' syntax) are not converted.
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.