Overview of 2023

C#

Episode Thirteen

C# is the modern language for building apps and services using .NET, named programming language of the year 2023 by the TIOBE Index

Intro

I'm Peter and this is the RoguePlanetoid Podcast where you will find insights about Microsoft or related platforms and technology, along with so much more whether you are beginner or an experienced professional or just interested in technology. Keep Current, Keep Coding!

Welcome

Welcome to episode thirteen and rather than being unlucky, you're lucky enough to be listening to this latest episode about C#. It has been a year since this podcast launched back in February 2023 and since then it has been listened to over 250 times and the most popular episode was on .NET 8 which is the platform for C# and if you want to know more about that then you can listen to that episode along with ones on Blazor and Windows App SDK which also take advantage of C#. If you're not already subscribing to or following this podcast, then why not do so then you'll never miss an episode of the RoguePlanetoid Podcast and for those listening now I appreciate you taking the time to listen to this podcast. If you like this episode and others on this podcast why not share them or give a rating, it would be wonderful to get more people like you listening to the RoguePlanetoid Podcast.

C# is the modern language for building apps and services using .NET, named programming language of the year 2023 by the TIOBE Index. C# was named programming language of the year as it had biggest uptick on one year by developers, and C# is close to moving from the fifth most popular programming language to the fourth most populate programming language currently occupied by Java with only C++, C and Python being more popular. C# is an open-source object-oriented programming language that can use strongly typed variables that can be declared implicitly with var or explicitly with their type such as a Boolean, String, or others along with support for generic types and so much more. You can find out more about using C# at csharp.net or you can check out the link in the show notes.

Version 1.0

C# first began with the development by Microsoft of the original version of .NET, .NET Framework, then known as Next Generation Windows Services or NGWS. Along with this new platform a brand-new programming language was created which was codenamed Cool or C like object-oriented language. The goal was to create a simple, modern, and general-purpose object-oriented language like Java. Cool turned out not to be the best name for a new programming language, but Microsoft kept the C and with a play on C++ which then and now is a well-established programming language renamed Cool to C# as the sharp symbol looks like four pluses.

C# 1.0 was released publicly in January 2002 with .NET Framework 1.0 and Visual Studio .NET 2002 where C# achieved its initial goal of being like Java with the very first version including major features such as Classes, Structs, Interfaces, Events, Properties, Delegates, Operators and Expressions along with Statements and Attributes. Microsoft gave developers during development of .NET Framework the opportunity to try it out and I was one of those developers able to get the alpha version of .NET Framework back in 2001 before getting the first public release in 2002, although I was using Visual Basic .NET at the time. There also was minor update to C# a year later in 2003 with the release of Visual Studio .NET 2003 where if using a foreach loop on an IEnumerator that implemented IDisposable then dispose would be called.

Version 2.0

C# 2.0 released in November 2005 along with Visual Studio .NET 2005 included features such as Generics, Partial types, anonymous methods, nullable value types, iterators along with support for covariance and contravariance that enables implicit conversions for array and delegate types. There were also enhancements to existing language features such as adding get and set for properties and static classes. Support for generics meant you could have lists of string or lists of int, bool and many more types.

Version 3.0

C# 3.0 was released in November 2007 with Visual Studio 2008 and marked a massive change in the language although most of the new language features would come with the release of .NET Framework 3.5. This new version of C# included support for auto implemented properties, anonymous types, extension methods, partial methods and object or collection initialisers along with query expressions, lambda expressions and expression trees. Those latter features came together as the feature known as LINQ or Language Integrated Query which allowed developers to perform operations on collections and other objects with a SQL-style query with LINQ today being considered one of C#'s most important language features and something I use as a developer on a regular basis in C# and know without it manipulating collections is a lot harder in C#.

Version 4.0

C# 4.0 was released in April 2010 alongside Visual Studio 2010 and introduced a few new features to add to those from the previous version including dynamic binding, named or optional arguments and support for covariant and contravariant with generics. The dynamic keyword was introduced and allowed developers to override the compiler on any compile time typing. This was also the very first version of C# I used, as with the release of Windows Phone which only supported C#, it was the best time to switch and haven't used Visual Basic .NET much ever since after officially becoming a C# developer.

Version 5.0

C# 5.0 released in August 2012 along with Visual Studio 2012 was a release which focused on another major feature of the language which was asynchronous programming model using async and await. This made dealing with long-running operations much easier and made dealing with today's world of web APIs and cloud services much easier as I remember writing or even understanding asynchronous programming was quite difficult before async and await were introduced to C#.

Version 6.0

C# 6.0 was released in July 2015 along with Visual Studio 2015 and introduced some productivity improvements to the language such as static imports, exception filters, auto-property initialisers, expression-bodied members along with null propagation, string interpolation and the nameof operator. These features helped developers remove language boilerplate and made code much easier to read creating cleaner and simpler code, this release also introduced Roslyn which was a C# compiler written in C# which could be used by developers for their applications using C#.

Version 7.0

C# 7.0 was released in March 2017 alongside Visual Studio 2017 which added out variables, tuples, pattern matching and local functions to the language. This was also the first version of C# introduced since the start of the modern .NET era as .NET Core 1.0 which could target any operating system was released a year earlier in 2016 and would signal the start of the end of the .NET Framework era. Later in 2017 and 2018 saw many minor releases of C# including 7.1 released in August 2017 which added support for the main method for the entry point of an application to be async, support for default literal expressions along with pattern matching on generic type parameters. C# 7.2 released in November 2017 added support for readonly and ref struct types, additional generic constraints along with conditional ref expressions. C# 7.3 was released in May 2018 included many incremental improvements to existing features and allowed safe code with managed objects to be as performant as unsafe code.

Version 8.0

C# 8.0 was released in September 2019 and was the first release that specifically targeted .NET Core rather than .NET Framework, as many features depended on capabilities introduced there that were not in .NET Framework. New features and enhancements to C# included readonly members, default interface methods, enhancements to pattern matching along with using declarations, static local functions, nullable reference types, asynchronous streams, and null coalescing. Features such as default interface methods and asynchronous streams were features that required .NET Core 3.0 released in 2019.

Version 9.0

C# 9.0 was released in November 2020 with .NET 5 which was the first major version of .NET in the new modern era of .NET with the end of new features being added to .NET Framework along with .NET Core being known as .NET from that point onwards. New or enhanced features of C# included records, top-level statements, pattern matching enhancements along with target typed new expressions and target-typed conditional expressions.

Version 10.0

C# 10 released in November 2021 with .NET 6 added more features to the C# language including record structs and improvements to structure types along with interpolated string handlers and const interpolated strings. Performance improvements along with separating data from algorithms was a key focus of this release and C# shifted to a yearly release alongside new versions of .NET, along with allowing for preview features such as generic attributes to be tried out by developers. Preview features may end up in the next release of C# or may be dropped if they prove not to be popular with developers using C#.

Version 11.0

C# 11 was released in November 2022 with the release of .NET 7 and new features were added to C# including raw string literals, generic maths support and list patterns for more support when pattern matching along with generic attributes which was previewed in the previous version of C#.

Version 12.0

C# 12 is currently the latest version of the language and was released in November 2023 along with .NET 8. New features included support for primary constructors, collection expressions, inline arrays and aliasing any type along with a preview feature for interceptors for evaluation to be included in the next version of C#, C# 13 due for release with .NET 9 in November 2024.

Overview

C# has been a constantly evolving language since the first release over twenty years ago in 2002, I have been using it since the release of Windows Phone back 2009 and over the past years have used it to create mobile applications for Windows Phone, web applications with Silverlight and ASP.NET, desktop applications with Windows Presentation Foundation, Universal Windows Platform and Windows App SDK. My only regret was not starting off as a C# developer when I started using .NET as I had been a BASIC, GW-BASIC, Visual Basic then VB.NET developer as that made sense, but when the need to switch finally came - I never looked back.

I've used C# for so many things along with speaking about it at many events and more and find it an excellent programming language and it came as no surprise when it was named programming language of the year in 2023 by the TIOBE Index and I expect it to become even more popular, especially as developers can target any platform from almost any platform not just Windows. Finally, it is great to see how the community is an integral part of the C# programming language as it exists today as new features can be suggested or discussed on GitHub by the community at github.com/dotnet/csharplang or you check out the link in the show notes.

Outro

Thanks for listening to the RoguePlanetoid Podcast where each episode you will find insights about Microsoft or related platforms and technology, along with so much more wherever you listen to your podcasts or at rogueplanetoid.com/podcasts for the RoguePlanetoid Podcast whether you are a beginner or an experienced professional or just interested in technology. Keep Current, Keep Coding!

RoguePlanetoid Podcast is a production of cluarantonn.com

Hosted, Written, Produced and Edited by Peter Bull

Music based on Like a Tiger by Jo Wandrini

Production Company Name by Granny Robertson