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

C# to Java Converter

C# to Java Converter produces great Java code, saving you hours of painstaking work and valuable time.

Try the Free Edition

  • Free
  • High-quality conversion
  • Convert projects up to 1000 lines
  • Convert snippets up to 100 lines

Purchase the Premium Edition

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

10 Second Overview

*Scroll right to see C# to Java Converter in action!

Key Benefits

The Most Comprehensive Converter

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


Your existing code is left completely intact.  The new Java files are written to the new location that you specify.

Our accuracy is the highest in the industry, but there will be significant adjustments required for all but the most trivial conversions.  There are no direct equivalents for some aspects of C#.  Read the rest of the FAQ to get an idea of a few things that are not converted.  C# to Java Converter is intended to reduce the amount of work you'll have to do to convert C# code to Java, but it is just the first step.

Yes - try out our Free Edition to see the conversion details.  We convert delegate declarations to interface declarations and references to delegate instances to lambdas.

Yes - try out our Free Edition to see the conversion details.  We substitute a wrapper type (using Java generics) for the event delegate type. This generic type maintains collections of 'listeners' with methods to add or remove listeners.

Yes - try out our Free Edition to see the conversion details.  We substitute a wrapper type (using Java generics) for the parameter type and adjust all references to the parameter in the defining method and all calls to the method.

Overloaded methods are created.  Missing arguments are replaced by the defaults specified by the original C# parameter list.

  • Most .NET Framework calls are not converted.  However, many references to common .NET types are converted to Java.
  • C# events of delegate types that are not defined in the converted code and also not one of the System.Action or System.Func delegates are not converted.
  • Since Java lacks a preprocessor, all code dependent on conditional compilation needs to be refactored so that the functionality can be achieved in other ways.  If your target environment is NetBeans, then no adjustments are required since C# to Java Converter converts preprocessor directives to NetBeans format by default (using //#if, //#else, //#elif, //#endif, //#define, and //#undefine).
  • C# LINQ queries are not converted since this feature is not available in Java.
  • C# 'struct' is converted to Java 'class', since Java does not include value types.  The Java class does not reproduce the same behavior as .NET value types, so adjustments may be required.
  • "unsafe" code blocks and types are not converted. 
  • C# nullable logic cannot be converted since the necessary null-value logic must be applied to every aspect of expressions containing the nullable variable or method call. The only aspect of nullable instances that is converted is the declared type - the corresponding Java wrapper type is used for nullable primitives (e.g., the Java wrapper type 'Integer' is used for C# int? or Nullable<int>).
  • 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

Java and C# Equivalents

Copyright © 1997 – 2017 Tangible Software Solutions Inc.