So You Want to Learn C#? (2026 Edition)

Patrick T Coakley 16 min read March 19, 2026 Software Development, C#, So You Want to Learn
[ #c# #programming #beginner #books ]
Note

After creating the original C++ version of this post and getting positive feedback from readers, I figured I could do some more, including C#. The format and structure of this series of posts will mostly be the same, and are meant as a general introduction for someone interested in C#. I will try to keep it updated as things change, possibly expanding coverage over time.

C# has come a long way from the days when it was just another Microsoft programming language made for Windows development, and while its identity might still be entwined with visions of enterprise software and business applications, the language and ecosystem has evolved significantly over the last decade with the introduction of .NET Core and the rise of cross-platform development. With the ability to target desktops, mobile, web, and anything in between, C# has become a versatile language that can be used for a wide range of applications.

Why Learn C#?

With the number of programming languages available today, C# is often overlooked for a few reasons, including misnomers about performance and platform support; it is often considered "Microsoft's Java." However, the reality is that it has become a very powerful language with a number of modern features that make it a great choice in places you might even expect.

For game development, the Unity game engine uses C# as its primary scripting language, and the Godot game engine supports C# right alongside its own GDScript. There's also MonoGame and FNA, both of which are spiritual successors to the original XNA framework.

In addition to being able to create robust back-end services using ASP.NET, C# can also be used for front-end web development with Blazor, which allows you to write client-side code in C# instead of JavaScript, letting you write full-stack C# web applications. You can even use Blazor Hybrid to create cross-platform applications similarly to Electron, but with C# instead of JavaScript.

.NET has also become a great desktop and mobile development platform as well. With strong support for native Windows applications using WPF, WinForms, and WinUI, Windows-native development is first-class with C#. Both WPF and WinForms, while legacy, are still widely used in enterprise applications, and support in modern .NET lets you take advantage of the latest features.

Outside of Windows, there are a few well-supported and mature options depending on your goals. If you want a cross-platform replacement for WPF, Avalonia is a great choice. It currently supports Windows, macOS, and Linux, as well as WebAssembly, mobile, and embedded. Similarly, Uno Platform is a cross-platform replacement for UWP that supports roughly the same targets as Avalonia. These are both the best options available for doing cross-platform desktop development with C#, and they both have active communities and good documentation.

There is also MAUI, which is a cross-platform application development framework that allows you to create native applications for Windows, macOS, iOS, and Android using C#. I would caution against heavily investing in MAUI at this time as it feels like it is not getting the support or development resources it needs to be a real competitor to the other options, but it might make sense for some teams, including those that are already heavily invested in the Microsoft ecosystem or were previously using Xamarin for mobile development.

Finally, .NET is actually supported on embedded platforms as well, meaning you can write C# on small devices like microcontrollers and SOC boards like the Raspberry Pi. nanoFramework is primarily focused with supporting C# development on microcontrollers, including native support for cloud connectivity and IoT applications. There is also .NET IoT, which is focused on supporting C# development on single-board computers like the Raspberry Pi, and has support for a wide range of sensors and peripherals. Lastly, there is Meadow, which is a hardware platform specifically designed for running .NET applications on embedded devices, and has support for a wide range of sensors and peripherals as well.

The Modern C# Landscape

Background

C# has its origins in the late 90's as Cool, which stood for "C like Object Oriented Language." Cool and CLR (Common Language Runtime) were developed to combat the fragmented landscape of developing for Windows at the time, as it was a mix of languages (C, C++, and Visual Basic) and frameworks (Win32 API, MFC, and COM). The original design for C# was heavily influenced by C++ and Java in an effort to appeal to existing programmers and to create something competitive to Sun's offerings. This resulted in a very robust language that was designed to be familiar but modern, and even compared to Java at the time it had a number of features that made it more powerful and easier to use, including properties, events, delegates, and a more powerful type system.

Since the original version of C# and the .NET Framework, everything has evolved significantly from the original vision. At the language level, even the leap from C# 1.0 to C# 2.0 was significant with the introduction of generics, and every major version since has included some major features that have changed the way you write C#. In addition, when .NET Framework was introduced it was only available for Windows, but now you can easily write cross-platform applications in C#. While you can (mostly) write C# the same way you might have 20 years ago, there are a number of modern features that have been added to the language that make it much more powerful and expressive, as well as a much more evolved development environment and ecosystem, and it's worth taking the time to learn about them and how they can improve your code.

Development Environment

The fastest way to start working with C# is to simply install the latest .NET LTS (Long Term Support) SDK; the current LTS is .NET 10. This will give you access to the dotnet CLI, which allows you to create, build, and run C# projects from the command line. This also lets you use a number of templates to quickly get started with different types of projects, including console applications, web applications, and class libraries. This is the standard way to create new .NET applications and helps wire up the dependencies and project structure for you.

As far as editors go, I have been using Rider for over a decade and would recommend it as the best C# development experience. It's cross-platform, it has a ton of great plugins and features, and now it's free for non-commercial use if you just want to use it for learning or doing open-source work. It also has the best debugging experience of any C# IDE, and is well-integrated with a variety of platforms outside of just .NET, including game engines like Godot and Unity, as well as databases and back-end services.

The major alternative to Rider right now would be Visual Studio Code. While in the past Visual Studio was the go-to IDE for C# development, it has become less prominent for .NET developers in recent years with the rise of cross-platform development and the fact that it's only available on Windows. Out of the box VS Code is more barebones, but it has a huge amount of extensions to customize the experience, including the C# extension, which provides support for C# development, including IntelliSense, debugging, and project management.

The nice thing about using .NET today is that it also includes a CLI that can do all of the same stuff that IDEs can do, so if you want to use something else like Emacs or Vim it's not as difficult of a workflow as some other languages, and you can still take advantage of the latest features and libraries without being locked into a specific IDE.

NuGet is the standard package manager for .NET, and it has a huge ecosystem of libraries and tools that you can easily add to your projects. It is worth noting that the C# community can be very divisive about what libraries to use based on their work environment and experience, so it's always worth doing some research to see what's out there as there are a number of great smaller libraries that are doing some interesting things, especially if you want to take advantage of the latest features.

The Standard Library

.NET (and by extension, C#) includes a large core library known as the BCL (Base Class Library), which covers many day-to-day development needs, including collections, IO, networking, cryptography, threading, and numerics. It also includes some especially notable capabilities. LINQ, for example, combines library support with C# language features and query syntax to make querying and transforming data much more expressive. The Task Parallel Library provides a strong foundation for writing concurrent and parallel code. There are even SIMD types such as Vector and Vector128 that let you take advantage of hardware acceleration in performance-sensitive code.

It would be difficult to cover everything, but some of the most foundational areas to become familiar with are:

Modern C# Features

The latest version of C#, C# 15, is the newest release as of the creation of this article, but because trying it out currently means using .NET 11 preview tooling, we will focus on C# 14 and previous versions by taking a look at some of the standout features that have been added over the years. C# originally released on a 2-3 year cadence until C# 8, which was the first version to target .NET Core instead of the .NET Framework, and since then there has been roughly been one new version every year. Some of the standout features of modern C# include:

To learn more, I suggest going through the version history and skimming all of the features added to each version and diving into the ones that look interesting to you. It is recommended you stick with the .NET LTS releases for production, especially in more conservative environments, but for learning purposes, side projects, and fast-moving teams, there's no reason not to try out the latest releases as they are typically very stable and are a way to get access to the latest features and improvements.

Learning Resources

Books

Previously there were a lot of great C# books being published pretty regularly, but over the last few years this has slowed down in favor of online resources, and so there won't be a long list of books to check out, especially since C# has evolved so rapidly over time. Still, there are some standouts that I want to recommend:

Online Resources

The official Microsoft C# documentation is honestly the best resource for learning C#, and .NET in general. It has very good coverage of everything you need to know, and they have been doing a good job of keeping it up to date with the latest features and improvements. It also has a number of tutorials and guides that can help you get started with different types of projects and applications.

Content Creators

The .NET community is not as prevalent on YouTube or Twitch as some other programming communities, but there are a few standout content creators that are worth following:

There are actually a few .NET-focused podcasts out there, including:

Conclusion

Affiliate Links

Some of the URLs in this article are affiliate links. If you want to support the site by purchasing any of the content on the site, it is greatly appreciated!