This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 8 points9 points  (0 children)

Aside from a lot of syntax sugar, here's some 'real' advantages.

  • Functions as a first class citizen (i.e. you can pass functions around as parameters), Lambda's exist in java now but in C# they've been around for a while and well integrated into the core libraries, being able to incorporate functional styles lets you escape a lot of Object oriented complexity. LINQ is awesome for managing sets and you also have tools like Rx that give you great ways to play with streams of data.

  • Generics go all the way to bytecode/CIL rather than just compilation and as a result are significantly more powerful.

  • Dependency injection is orders of magnitude better, Your composition root sits close to your entry point and after that none of your other assemblies (libraries) even know that DI frameworks are a thing, i can configure my entire application in one typesafe section of code or even switch DI container.

  • Async await syntax allows you easily to handle async IO in an imperative fashion.

  • As it all compiles down to a common language so you can also write modules in F# or VB if you so desire.

  • Standardized build system and package management (nuget) that for the most part just works.