Skill Roadmap

C#

C# is Microsoft's general-purpose, strongly-typed language for the .NET ecosystem — powering everything from ASP.NET Core APIs to desktop apps, games in Unity, and mobile apps with .NET MAUI. This roadmap walks you from syntax and types through object-oriented programming, generics, LINQ, and asynchronous code, and on to the tooling that keeps a real C# codebase healthy.

Why learn C#?

One language, four platforms — web, desktop, mobile, and games

C# is a modern, object-oriented, strongly-typed language built for the .NET runtime. It compiles to an intermediate language that runs cross-platform on Windows, Linux, and macOS, and its syntax will feel familiar to anyone coming from Java, TypeScript, or C++.

Its reach is unusually wide for one language: ASP.NET Core for backend APIs and web apps, Blazor and .NET MAUI for client-side and mobile UIs, and Unity for game development all build directly on C#.

The language itself has grown quickly in recent versions — pattern matching, records, and nullable reference types have made modern C# considerably more concise and safer than the C# of a decade ago.

The C# Roadmap

Work through these in order, from syntax to the ecosystem around a real project

STEP 1
C# logo

C# Basics

Get a project running before worrying about the rest of the language.

What is C#? The .NET Ecosystem .NET CLI Syntax & Program Structure dotnet run / dotnet build
STEP 2

Data Types & Variables

C#'s type system starts here — the difference between what's copied and what's referenced.

Value Types
int, double, decimal bool char struct
Reference Types
string object class
var & Type Inference Nullable Types Constants
STEP 3

Control Flow

Branch, loop, and match against shapes of data instead of just values.

if / else switch for foreach while do-while Pattern Matching
STEP 4

Methods & Functions

Package logic into reusable pieces, and the several ways C# lets you pass data into them.

Method Basics ref, out, params Optional Parameters Method Overloading Local Functions Lambda Expressions
STEP 5

Object-Oriented Programming

Classes, properties, and the access rules that keep an object's internals under control.

Classes & Objects Constructors Properties Fields Access Modifiers Static Members
STEP 6

Inheritance & Polymorphism

Share behavior across related types, and let each one override what it needs to.

Inheritance Abstract Classes Interfaces virtual / override Polymorphism Sealed Classes
STEP 7

Collections & Generics

Store groups of data, and write code that works across types instead of just one.

Arrays List<T> Dictionary<K,V> Generic Types Generic Constraints IEnumerable / IEnumerator
STEP 8

LINQ & Delegates

Query collections declaratively, and treat functions themselves as values.

Delegates Events Func / Action
LINQ
Query Syntax Method Syntax Where, Select, OrderBy GroupBy, Join
STEP 9

Exception Handling

Fail predictably, and give the rest of the program a chance to recover or clean up.

try / catch / finally Custom Exceptions Exception Best Practices
STEP 10

Asynchronous Programming

Keep an app responsive while it waits on I/O, without blocking a thread the whole time.

Threads vs Tasks async / await Task Parallel Library Cancellation Tokens
STEP 11

File I/O & Serialization

Read and write files, and convert objects to and from formats like JSON.

File / Directory Classes Streams System.Text.Json XML Serialization
STEP 12

Advanced C#

The modern language features that make recent C# noticeably more concise and safer.

Records Advanced Pattern Matching Nullable Reference Types Extension Methods Attributes & Reflection Span<T>
STEP 13

Ecosystem & Tooling

Package management, testing, and where C# leads once you know the language.

NuGet xUnit NUnit Debugging Formatting & Analyzers
Where C# Leads Next
ASP.NET Core .NET MAUI Unity

GitHub Projects

Real, buildable projects to put on your own GitHub

Frequently Asked Questions

Common questions from people starting out with C#

Is C# a good first programming language?

Yes. Its strong typing catches many mistakes at compile time rather than at runtime, and the tooling around it — Visual Studio, IntelliSense, the debugger — gives beginners a lot of helpful feedback while they're learning.

What's the difference between C# and .NET?

C# is the language; .NET is the runtime and standard library it runs on. .NET also supports other languages like F# and Visual Basic, and modern .NET (as opposed to the older, Windows-only .NET Framework) is open-source and cross-platform.

Do I need Visual Studio to write C#?

No. Visual Studio is the fullest-featured option on Windows, but VS Code with the C# extension, JetBrains Rider, or just the .NET CLI on any platform all work fine for writing, building, and running C# code.

C# vs Java — how similar are they?

Very similar in spirit — both are statically typed, object-oriented, and compile to an intermediate bytecode. C# has generally added modern language features like LINQ, records, and pattern matching somewhat earlier, while Java's ecosystem and JVM tooling remain broader in some areas.

What can I build with C# beyond web apps?

Desktop apps with WPF or .NET MAUI, cross-platform mobile apps also with .NET MAUI, and games with Unity — one of the most widely used game engines, which uses C# as its primary scripting language.

Should I learn LINQ early?

It's worth learning once you're comfortable with collections and lambda expressions — LINQ shows up constantly in real C# code, and being able to read a chained LINQ query is close to a prerequisite for working on an existing codebase.

Track complete

From syntax and OOP to generics, LINQ, and async/await — that's the core of what's expected of any C# developer. Keep building, and put it to work with ASP.NET Core, .NET MAUI, or Unity.

Where next?

Keep exploring by domain or drill into a single skill