18 Reasons to Use C# / .Net
(some of this also explain why C# > Java)
- No pointers required! C# programs typically have no need for direct pointer
manipulation (BUT you are free to drop down to that level if absolutely
- Automatic memory management through garbage collection. Given this, C# does
not support a delete keyword.
- Formal syntactic constructs for classes, interfaces, structures, enumerations, and
- The C++-like ability to overload operators for a custom type, without the
complexity (e.g., making sure to “return *this to allow chaining” is not your
- Support for attribute-based programming. This brand of development allows you
to annotate types and their members to further qualify their behavior. For
example, if you mark a method with the [Obsolete] attribute, programmers will
see your custom warning message print out if they attempt to make use of the
- The ability to build generic types and generic members. Using generics, you are
able to build very efficient and type-safe code that defines numerous placeholders
specified at the time you interact with the generic item.
- Support for anonymous methods, which allow you to supply an inline function
anywhere a delegate type is required.
- The ability to define a single type across multiple code files (or if necessary, as an
in-memory representation) using the partial keyword.
- LINQ: Support for strongly typed queries used to interact with various forms
- Support for anonymous types that allow you to model the shape of a type rather
than its behavior.
- The ability to extend the functionality of an existing type (without subclassing)
using extension methods.
- Inclusion of a lambda operator (=>), which even further simplifies working with
.NET delegate types.
- An object initialization syntax, which allows you to set property values at the
time of object creation.
- Support for optional method parameters, as well as named method arguments.
- Support for dynamic lookup of members at runtime via the dynamic keyword.
This provides a unified approach to invoking members
on the fly, regardless of which framework the member implemented (COM,
IronRuby, IronPython, or via .NET reflection services)
- Working with generic types is much more intuitive, given that you can easily map
generic data to and from general System.Object collections via covariance and
- More and more companies and projects are going for the Open Source Mono Project’s implementation to create true cross-platform applications, both on desktop and mobile platforms.
- The current version of C#
provides a pair of new keywords (async and await), which massively simplify multithreaded and
You’ll be the judge! Both Languages has their charm, but personally (I learned Java many years ago) I strongly prefer C#, as you probably reasoned from this article…