A complete roadmap to learn C# programming and .NET development from beginner to advanced level.
This repository is designed to help anyone searching for a:
- 🚀 C# Roadmap
- 💻 .NET Roadmap
- 📘 C# Learning Path
- 🧠 C# Study Guide
📦 Covers: Basics → OOP → Collections → LINQ → Generics → ASP.NET Core → Entity Framework → Clean Architecture
This guide is structured as a Markdown checklist and updated regularly as I learn.
Console.Write("What is your name?"); // With newline
string name = Console.ReadLine();
Console.WriteLine(name);
- Value Types (int, float, char, etc.)
- Reference Types (string, object)
string input = "123";
int number = Convert.ToInt32(input);
double d = Convert.ToDouble("3.14");
bool b = Convert.ToBoolean("true");
int? number = null;
int result = number ?? 0;
- if-else
- switch
- Loops
- for
- foreach
- while
- do-while
- try-catch-finally
- Other Statements
- using
- lock
- unsafe
- yield
- Arithmetic
- Assignment
- Relational
- Bitwise
- Overflow/Underflow (checked/unchecked)
-
Classes and Objects
-
Constructor, Destructor/Finalizer
-
Inheritance
-
Polymorphism (compile time & run time)
-
this & base keyword
-
Fields (static, instance, readonly)
-
Field, properties & Auto properties: { get; set; }
-
Access Modifiers (public, private, protected, internal, protected internal, private protected)
-
Storage & Behavior Modifiers (static, const, required, readonly, volatile, unsafe)
-
Methods (static, instance, override, abstract, virtual)
-
Method Overloading
-
Method Override
-
Constructors (static, instance)
-
Constructor chaining
-
Static Class
-
Partial Class & Partial Methods
-
Abstract Class
-
Structs
-
Enums
-
Interfaces and Delegates
-
Namespaces
-
Using Generics
- Generic Class, Constraints and Generic Method
- Built in Generic data structures (List, Dictionary<K,V>, Queue, Stack, HashSet, SortedList<K,V>, SortedDictionary<K,V>)
- Concurrent Collections (for multithreading) (ConcurrentDictionary<K,V>,ConcurrentQueue, ConcurrentStack, BlockingCollection)
- Non-generics collection
- Generic Collections (System.Collections.Generic)
- List
- Dictionary<TKey, TValue>
- Queue
- Stack
- HashSet
- LinkedList
- Non-generic Collections
- ArrayList
- Hashtable
- SortedList
- Stack
- Queue
- Arrays
- Single-dimensional Arrays
- Multi-dimensional Arrays
- try, catch, finally
- Custom Exceptions
- throw keyword
- Exception filters
- Basic LINQ Concepts
- Select
- Where
- OrderBy
- GroupBy
- Aggregation & Set Operations
- Sum
- Count
- Min/Max
- Intersect
- Union
- Except
- Element Operators
- First
- Last
- Single
- ElementAt
- Filtering and Conversion
- OfType
- Cast
- ToList
- ToArray
- ToDictionary
- LINQ Projection & Quantification
- SelectMany
- All
- Any
- Contains
- yield return
- Lambda Expressions
- Delegates
- Events
- Extension Methods
- Anonymous Methods
- ref, out, in keyword
- params keyword
- Nullable reference types (?, ??, ??=, ?.)
- Pattern Matching (with is, switch, etc.)
- async / await
- Tasks and Task
- Threads
- Thread.Sleep, Task.Delay
- lock keyword
- Parallel.For, Parallel LINQ (PLINQ)
- CancellationToken
- System.Reflection
- Reading metadata
- Custom Attributes
- typeof, GetType()
- Value Types vs Reference Types
- Stack vs Heap
- Garbage Collection
- IDisposable and using statement
- Finalizers
- Tuples
- Records (C# 9+)
- Dynamic Type
- var, dynamic, object differences
- enum and struct
- nameof operator
- Top-level statements (C# 9+)
- Reading/Writing Files (System.IO)
- StreamReader / StreamWriter
- Binary and XML Serialization
- JSON Serialization (System.Text.Json, Newtonsoft.Json)
- What is .NET / .NET Core / .NET 5/6/7/8?
- CLR (Common Language Runtime)
- CTS, CLS (Common Type System, Common Language Specification)
- Project Types: Console App, Class Library, ASP.NET Web App
- Solution (.sln) and Project (.csproj) files
- Understanding the build and run lifecycle
- Creating and running projects with dotnet CLI
- Adding NuGet packages (dotnet add package)
- appsettings.json configuration
- Environments (Development, Production, etc.)
- MVC Pattern (Model-View-Controller)
- Razor Views & Razor Pages
- Middleware and Request Pipeline
- Routing and Endpoints
- Static Files and Hosting
- Creating RESTful APIs with Controllers
- Attribute Routing ([HttpGet], [HttpPost])
- Model Binding and Validation ([FromBody], ModelState)
- JSON Serialization (System.Text.Json)
- Swagger/OpenAPI Integration
- Constructor Injection
- AddTransient, AddScoped, AddSingleton
- Registering and Resolving Services
- IConfiguration and IOptions
- Reading from appsettings.json, environment variables
- Strongly Typed Configuration
- Code First vs Database First
- DbContext and DbSet
- Migrations (Add-Migration, Update-Database)
- Relationships (1:1, 1:N, M:N)
- LINQ with EF
- Eager vs Lazy Loading
- Raw SQL Queries
- ASP.NET Core Identity
- OAuth
- Identity Server
- Access Mechanism
- Role-Based and Policy-Based Authorization
- JWT Authentication
- Custom Authentication Handlers
- Claims and Identity Management
- Creating Custom Middleware
- Exception Handling Middleware
- Action Filters, Result Filters
- ILogger
- Logging providers: Console, Debug, File, Serilog
- Application Insights
- Kestrel Web Server
- IIS Integration
- Publishing with dotnet publish
- Dockerizing .NET Apps
- CI/CD basics with GitHub Actions, Azure DevOps, etc.
- Unit Testing with xUnit / NUnit / MSTest
- Mocking with Moq
- Integration Testing (TestServer)
- Testing EF Core
- API Versioning
- Rate Limiting
- Throttling
- Caching (In-memory, Distributed)
- Uploading/Downloading files in APIs
- Clean Architecture / Onion Architecture
- Repository and Unit of Work Patterns
- CQRS & Mediator Pattern
- SOLID Principles
- Minimal APIs (introduced in .NET 6)