As a trainer who teaches both C++ & C#, keeping up with language developments is a full-time job & it is interesting to see where changes in one language very often propagate into the other within a few years.
The year after betas emerged in 2001, Microsoft released C# and VB.NET v1.0, .NET framework 1.0,1.1. CLR version 1.0, and Microsoft Visual Studio 2002.
Since then, there have been releases every couple of years or so with fairly major updates in 2007 with C# v3.0, .NET 3.0 & 3.5, and in 2019 with C# v8.0 with .NET framework 4.8 - which marked the start of the migration towards .NET Core. Since then C# 9.0, 10.0 & 11.0 in 2020, 2021 & 2022 developing the cross-platform features of the product. I have been working with C# since the beta releases & have seen the growth in popularity of the language - and one heck of an evolution.
As a trainer who teaches both C++ & C#, keeping up with language developments is a full-time job & it is interesting to see where changes in one language very often propagate into the other within a few years. Staying up to date really keeps you on your toes! I have always aimed to include major changes and as many of the minor ones as possible. As a course author too, life becomes doubly difficult. Not only does one have to be able to test and teach the new features, but a huge amount of time goes into making sure the courseware is up to spec.
Like any computer program, there comes a point where the courseware is difficult to maintain & modify, and sometimes a complete re-write becomes necessary.
That is why, after over 20 years of steady iterations of my courseware (a bit like Trigger's broom), I have completely re-written the Framework Training C# Programming training course to be fully compliant with the latest C# standards – C# 11 & .NET 7.
C# 11 introduces generic math and several features that support that goal. You can write numeric algorithms once for all number types. There are more features to make working with struct types easier like required members and auto-default structs. Working with strings gets easier with raw string literals, newline in string interpolations, and UTF-8 string literals.
Features like file local types enable source generators to be simpler. Finally, list patterns add more support for pattern matching. Prior to C#11, C# 10 continued work on removing ceremony, separating data from algorithms, and improved performance for the .NET runtime.
Many of the features mean you'll type less code to express the same concepts. Global using directives and file scoped namespace declarations mean you express dependencies and namespace organisation more clearly. Lambda improvements makes it easier to declare lambda expressions where they're used.
Not all these changes have made their way into the new course. Some fit more naturally into an advanced course which will be coming later - so stay tuned! One of the challenges of writing courses for a constantly developing language is that new features and functionality need to be prioritised - they can't all be squeezed into one workshop!
While some features may become superseded by newer methodologies, the older features will still be found in legacy code which still needs to be maintained by programmers. ADO.NET is a prime example. ADO was, to some extent, superseded by Entity Framework (EF), which has now itself been superseded by Entity Framework Core. On my travels I have come across companies that use both ADO & EF - so both need to remain in the course.
A well-designed course should be able to cope with both legacy tools and their newer equivalents. The old training course lasted 20 years . The refreshed course covers a wealth of new topics, while still supporting tried-and-tested fundamentals, and can be tailored to your requirements to reflect how your team will be implementing .NET in the wild.
If you found this article interesting you might be interested in some of our related training courses: