So far, I considered C# as the best language in its category (managed object-oriented languages with static typing) and it seems that this not bound to change yet with the new goodness that will be available in C# 7.
Coding in C# feels very productive and it is my current favorite programming language. In this post, I would like to articulate the reasons of this choice.
Many things can be done using C#
Many types of applications can be developed by using C#:
- Cross platform Web applications and APIS with ASP.NET CORE
- 2D and 3D Video games with Unity
- Windows desktop applications with WPF
- Cross platform mobile application with Xamarin
The most exciting thing that led me to adopt C# as a primary language is the .NET Core Runtime which allows to run C# applications on Linux.
Community support and tooling
One might think that minimal support for building C# application would cost money, but actually it is not the case because an open source .NET community is rising steadily by building a large volume of accessible educational resources and open source libraries.
C# features I appreciate the most
Automatic properties are very nice and allows us to avoid a lot of boiler plate when defining encapsulated properties.
LINQ allows to cut a lot of fluff by allowing a declarative chaining of operations and allows for a bit of a functional style of programming which is nice to have in some cases.
async/await is a construct that allows to get rid of callback based asynchronous interfaces that in my opinion can pollute the code base seriously in complex cases. This basically makes asynchrony more affordable from a maintainability stand point.
I am looking forward to pattern matching in C# 7 in which I hope we will more support for the functional style of programming.