C# is now ‘C#++’
While some new languages were created to eventually replace its successor (like Swift, and perhaps Kotlin, …), C# itself is evolving, continuously.
The ECMA standard lists these design goals for C#:
The language is intended to be a simple, modern, general-purpose, object-oriented programming language.
C Sharp (programming language) - Wikipedia
Due to technical limitations of display (standard fonts, browsers, etc.) and the fact that the sharp symbol ( ♯ MUSIC…
…intended to be simple!
If you have been following the latest C# 7.2 features here, you know that the language is getting more complex now.
In addition to
out, C# now has
ref struct. Err, What?
These enhancements to the C# language are designed for performance critical algorithms where memory allocations can be critical to achieving the necessary performance. You may find that you don’t often use these features in the code you write. However, these enhancements have been adopted in many locations in the .NET Framework.
And the beauty of C# is, you can always go low-level with
That “pointer manipulation” reminds me of my old “Hello world” C++ art code I wrote back in 2003.
With C# 7.2
Memory<T> in .NET Core 2.1, we don’t really have to go low-level to optimize our code. We get the best of both worlds: performance boost and easier to maintain code. Your boss will be happy.
See the latest performance improvements in .NET Core 2.1:
readonly struct, do you know that you can write an extension method for structs that takes
this by value, by
in or by
Not really new, but another interesting thing about struct worth to point out:
If you are dealing with those kinds of things, then definitely check out the mentioned library here: https://github.com/SergeyTeplyakov/ObjectLayoutInspector
Also from the same author, https://twitter.com/STeplyakov is working on a set of Roslyn-based analyzers that will help you to write correct code. The idea is similar to Google’s error-prone but focusing on correctness (and, maybe, performance) of C# programs.
Last but not least, Nullable Reference Types is coming to C# 8.0!
For a complete status of C# language feature, see:
Catch up with the latest .NET technology is hard. I plan to write about it in the future posts. You can follow me on twitter.