Course Overview
Learn C# from A to Z with this Masterclass and become a C# Software Developer.
In this course, you are going to discover how to become a C# developer by learning all the real-world software development skills that you'll need.
Are you ready to dive deep into the world of C# and .NET framework development?
I have created a course that makes the path to becoming a skilled C# developer as easy as possible, all with this C# Masterclass!
You start off by learning the C# basics and programming concepts in general:
Variables
Arrays
If Statements
Loops
Building Algorithms & Logic
Then you learn the pillars of object-oriented programming:
Classes
Methods
Objects
Inheritance
Polymorphism
Clean Code
SOLID principles
Once you mastered them, you will go into advanced C# Topics, such as:
Events
Delegates
Interfaces
Generics
Databases
LINQ
WPF
Unit Testing
The C# Masterclass is full of amazing exercises and best practices that'll help you get into professional C# development in a fast and fun way.
In addition to the C# development topics you'll also dive into some of the most popular Frameworks that C# developers use around the world! Such as WPF for building Desktop applications and Unity for building Games.
I'm here to help!
I know that learning to code can be hard at times, and sometimes you just get stuck. But no worries, I am here to help you. Me and my team answer each question as quickly as we can and make sure that you reach your goal of becoming a developer.
Who is this course for?
The course is for anyone, who wants to learn C# and wants to become professionally good in C# programming. No experience is required whatsoever. It is designed so that anyone who can handle a mouse and keyboard will succeed in finishing it.
Full 30-Day Money-Back Guarantee
This course comes with a 30-day full money-back guarantee. Take the course, watch every lecture, and do the exercises, and if you are not fully satisfied, ask for a full refund within 30 days. All your money back, no questions asked.
About me, your instructor:
My name is Denis Panjuta, and in my courses, I have taught over 500.000 students how to code. I have a Bachelor of Engineering from the University of Applied Sciences in Constance (Germany). I love teaching and creating high-quality courses. My mission? Teaching 10.000.000 people how to code.
See, this is the only C# course you will ever need.
You will learn all the C# skills that you need to know to succeed in C# and .NET coding!
Don’t waste any more time and become a C# software engineer by starting this course now.
FAQ
FAQ area empty
Course curriculum
-
Introduction
106 Xem trước -
What Do You Want To Achieve?
129 Xem trước -
Setting Up Visual Studio Community Edition for Windows (Latest Version)
Xem trước -
Downloading and Installing Visual Studio
252 Xem trước -
Visual Studio for Mac - What to do
299 -
Visual Studio for Mac is No More – What Now?
-
Udemy Reviews Update
Xem trước -
Creating our First Project and Hello World
237 Xem trước -
Hello World on a Mac
125 Xem trước -
CHEATSHEET - Writing our First Program
-
History of Csharp
441 -
Understanding Frameworks and Compiling
336 -
Single line comments
81 -
Top Level Statements - Documentation
435 -
Using System Directives
132 -
Using variables - String
332 -
Understanding User Input and the Data Type String
475 -
Take control over our console
107 -
Quick VS UI overview, Folder Structure and understanding Compiler errors vs RunT
343 -
C# Fundamentals Quiz
-
The different things you can build with C# and .NET
-
High Level Overview of Variables and Datatypes
265 -
Coding Standards
234 -
Naming Conventions
228 -
Overview of Datatypes
445 -
Data Types and ChatGPT
339 -
Value vs Reference Type
200 -
Variable Definition, Initialization and Assigning
160 -
Simple Variables Introduction
0 -
Intro Mini Project Addition Calculator
59 -
Understanding Warnings in C# Development
-
Understanding Int Number Datatype and why we cant fit a string into it
288 -
Using the Parse Method to Convert from String to Int
248 -
Understanding Type Conversion in C#
-
Finalizing our Addition Calculator
353 -
String Concatenation vs String Interpolation
165 -
Using Decimal Numbers instead with Double
364 -
Dots and commas with doubles
184 -
Fixing some more bugs
358 -
Implicit Conversion
235 -
Explicit Conversion
386 -
Conversion Helpers Parse and Convert
342 -
Implicitly Typed Variables vs Explicitly Typed Variables
191 -
Operators, order of Evaluation and some math basics
567 -
Debugging, Breakpoints, Runtime Error and Compile time Error
554 -
Debugging and Fixing Simple Bugs
-
Fixing Simple Bugs
0 -
Char Datatype and UTF16 Smiley
237 -
More String Manipulation with String Formatting
252 -
Understanding Indexing in C#
-
Characters that are Reserved in C#
-
How to use special characters in strings with the escape character
203 -
Special Characters and Escape Sequences
0 -
C# Cheat sheets
-
Want to become an employed C# developer?
-
Additional materials
-
CHEATSHEET - Datatypes in C#
-
Logical Operators
193 -
Logical Operators in C#
-
Datatype Bool
150 -
If Statements
142 -
OR and NOT operators
318 -
AND operator
154 -
Relational operators
303 -
The Else Keyword
109 -
DataType Bool and Conditional Statements
0 -
Else If Keyword and Order of Importance
333 -
Control Structures: If, Else, and Else If in C#
-
Equality Operator and not equal
306 -
Nested If Statements
260 -
Understanding the Scope of a variable
278 -
Challenge Clubbing or no Clubbing
350 -
One Line If Statements
149 -
The Switch Statement - Keywords Switch
289 -
Switch or If - which to choose
178 -
CHEATSHEET - Decision Makking in C#
-
Using the Switch Statement
0 -
Our Little Quiz App
492 -
Using String Methods Trim and ToLower
276 -
Incrementing and Pre-Incrementing
236 -
Decrementing and Modulo Operator
331 -
How to use try parse
347 -
Advanced Conditionals and Loops
-
How to generate a random number
367 -
ADVANCED EXERCISE: Building a Conditional-Based Calculator
0
-
Loops Overview
115 -
For Loop
364 -
For Loop - Count down challenge
116 -
Escape Characters r and n as well as Thread.Sleep
328 -
CHALLENGE: Rocket Landing Simulation
-
Landing a Rocket with a for loop
159 -
While loop and using it as a counter
315 -
While loops where it really shines
343 -
Guess the Number Challenge Solution
388 -
Working with While Loops
-
Building a Text Adventure Game
622 -
Do While Loops
257 -
Solution Average Calculator
273 -
Break and Continue
386 -
Simple Array
363 -
Declaring and setting values for arrays in the same line
227 -
Foreach and length of an array
484 -
Understanding Loops in C#
-
TwoDimensional Arrays
555 -
ThreeDimensional Arrays
265 -
CHEATSHEET - Loops in C#
-
Using Arrays
0 -
Let´s talk about Jagged Arrays
-
ADVANCED EXERCISE: Working with Two-Dimensional Arrays and Loops
0
-
Intro To Functions / Methods
428 -
Void Method without Parameters
300 -
Void Method with a Parameter Part 1
312 -
Void Method with a Parameter Part 2
443 -
Understanding Methods in C#
-
Scope of variables and parameters
188 -
Quick lesson about Argument Promotion
-
Parameter Modifiers in C# (ref, out, and in)
-
Moving to the classical Template - Top Level Statements
534 -
Moving our Methods outside of the Main Method
246 -
Fields, instance variables and how they differ from local variables
305 -
Variable and Scope Understanding
-
WeatherSimulator - Using Arrays, Random, and For Loops
619 -
WeatherSimulator - Calculating the Average Temperature
425 -
Mixing Doubles and Ints when Calculating
191 -
WeatherSimulator - Getting the Min and Max Values of an array
294 -
WeatherSimulator - Getting the Most common weather condition
710 -
CHEATSHEET - Functons and Methods in C#
-
Recursion in C#
-
ADVANCED EXERCISE: Calculating Average Temperature
0
-
Objects Intro
127 -
Introduction To Classes And Objects
195 -
Creating our First own Class
478 -
Member Variable and Custom Constructor
437 -
Properties - Autogenerated - to protect our member variable
359 -
Defining how a property is set
508 -
Modifying the Get of our Property Part 1
428 -
Modifying the Get of our Property part 2
300 -
Having Multiple Constructors
431 -
Default Constructor and Use Cases
333 -
Understanding Constructors
-
Methods in Classes
443 -
Methods in Classes in more detail
457 -
Expression Bodied Members in C#
-
What are Inner Classes in C#?
-
Partial Classes and Methods
-
Optional Parameters
252 -
Named Parameters
178 -
Operator Overloading in C#
-
Passing Arguments by Value and by Reference
-
Computed Properties and No Constructor
188 -
Static Methods
419 -
Using Static Methods
0 -
Static Fields
182 -
Static Keyword Considerations
-
The is Operator and the as Operator in C#
-
Public and Private Keywords
276 -
ID Key and readonly
445 -
Read Only Properties
168 -
Working with Read-Only Properties
0 -
Write Only Properties
315 -
Const and ReadOnly
321 -
Working with Read-Only Properties
-
Quiz Project Introduction
213 -
QuizApp - Question Class
318 -
Keyword This
201 -
Displaying Questions
361 -
Displaying Answers, Console.Write and Console.ForegroundColor
390 -
Getting the UserInput and checking if it is right
348 -
Displaying Multiple Questions and if we are right or wrong
476 -
Displaying the Results
475 -
CHEATSHEET - Object Oriented Programming in C#
-
ADVANCED EXERCISE: Creating a Class with Properties and Methods
0
-
Presentation Lists Overview
456 -
Declare a List, add and read List item
176 -
Removing Items from a List
323 -
Initializing a list with items
149 -
Initializing a List with Items
0 -
Sort() ing a list
164 -
Working with Lists
-
FindAll
295 -
Predicates and Lambdas
416 -
Predicates with Find All and Delegates
336 -
Any Method
180 -
Using the Any Method on a List
0 -
Using Lists with complex Objects
339 -
List.Where() and getting a first touch point with LINQ
508 -
Using LINQ with Lists
-
Legacy ArrayLists
685 -
Legacy Hashtables
937 -
Nullables in Csharp
420 -
Dictionaries Part 1 - Declaring, Initializing and Adding Items
294 -
Dictionaries Part 2 - Updating, Removing entries and Iterating through Dictionar
337 -
Gracefully Adding and Updating Dictionaries
305 -
Using a Complex Object as the Value of a Dictionary
454 -
Using a Complex Object as the Value of a Dictionary
0 -
Why use this Dictionary instead of an array
-
Another way to declare and initalize dicts plus string as key
369 -
CHEATSHEET - Collections in C#
-
ADVANCED EXERCISE: Advanced Dictionary Operations
0
-
Try And Catch
392 -
Understanding Try-Catch
-
The Finally Keyword
230 -
The Finally Keyword
0 -
Try Catch, huh. Why not just use If Statements
142 -
Debug Log
406 -
Throw Keyword
364 -
Managing multiple Types of Exceptions
401 -
Exception Handling Techniques
-
Why the Default Exceptions rocks
249 -
How Exceptions Work with the Call Stack
518 -
How to Handle Exceptions Properly
-
CHEATSHEET - Debugging in C#
-
ADVANCED EXERCISE: Handling Multiple Exceptions
0
-
Inheritance Base Class vs Derived Class
502 -
(HAS-A) and (IS-A) Relationship in C#
-
The 3 slash 4 Types of Inheritance
366 -
Access Modifiers and the Protected Keyword
363 -
Method Overriding with override and virtual
285 -
Method Hiding in C#
-
Sealed Methods in C#
-
Understanding Method Overriding
-
The Base Keyword and Why Inheritance even matters
299 -
Abstract Classes and Methods in C#
-
Working with Inheritance and Base Keyword
0 -
Constructor Inheritance 1 - Base Keyword with Constructors and How Properties ar
482 -
Constructor Inheritance
350 -
Constructor Inheritance
0 -
When and Why Constructor Inheritance is Useful
94 -
Constructor Inheritance and Usage
-
Constructor Inheritance with Multiple Derived Classes
505 -
Every Class inherits from the Object class
315 -
XML Comments Documentation
288 -
Sealed keyword
242 -
CHEATSHEET - Inheritance and more on OOP
-
ADVANCED EXERCISE: Advanced Method Overriding
0
-
What and Why Interfaces - Including Syntax
287 -
Implementing and using Interfaces - Exercise
226 -
Challenge - Create a Cat Class that implements IAnimal
-
Solution Exercise - Create a Cat Class that implements IAnimal
84 -
Implementing and Using Interfaces
0 -
What is Polymorphism and why use it
167 -
The second part of Polymorphism
263 -
Understanding Polymorphism
-
Interface Reusability while using Polymorphism
678 -
Understanding the difference of Polymorphism and Interfaces in our Payment Examp
395 -
Polymorphism with Interfaces
0 -
CHEATSHEET - Polymorphism + Adv OOP + Text File
-
Storing a Log Text File on your PC with your own text
274 -
Creating a Folder on Your PC and Logging text there
315 -
Decoupling Code and Enhancing Testability
591 -
Dependency Injection in C# Made easy - So what is DI in C#?
-
Understanding Dependency in Dependency Injection
277 -
Super Simple Constructor Dependency Injection
246 -
Setter Dependency Injection
259 -
Interface Dependency Injection and Comparison
348 -
Understanding Dependency Injection
-
Dependency Injection Methods
0 -
Multiple Inheritance in csharp
289 -
Abstract Class vs Interface in C#
-
ADVANCED EXERCISE: Polymorphism with Interfaces
0
-
Introduction to Structs
374 -
Structs example get distance between two points
322 -
Understanding Value Type vs Reference Type with Structs vs Classes
319 -
Understanding Structs in C#
-
Enums in C#
329 -
DateTime
1169 -
MathClass
467 -
ADVANCED EXERCISE: Using Structs with DateTime and Math
0 -
Garbage Collection
521
-
Introduction to Delegates
411 -
Where to declare delegates
41 -
Simple delegates example
259 -
Quick Class! - What are Bubble Sort Algorithms?
-
Super quick intro to Generics
462 -
Combining Generics with Delegates to make a sorting algorithm
765 -
Multicast Delegates
271 -
Understanding Multicast Delegates
-
GetInvocationList seeing which methods are in a multicast delegate
480 -
Intro to Events - Publishers and Subscribers
561 -
Real World example - Events - Temperature Monitor
510 -
ADVANCED EXERCISE: Stock Price Alert System with Dynamic Thresholds
0 -
Using EventArgs and EventHandler
896 -
Understanding Events
-
What this chapter is about
105 -
What is Regex
113 -
So, what is Regex then?
-
Using dots and wildcards, Regex Matching, and Quantifiers
363 -
Creating groups and ranges and using alternation constructs
373 -
Finding Specific Patterns and some examples for our challenges
683 -
CHALLENGE: Telephone number Challenge
191 -
CHALLENGE: Mr and Mrs
206 -
CHALLENGE: Web URL Challenge
112 -
Using Regular expressions in CSharp
413 -
ADVANCED EXERCISE: Extracting Email Addresses with Regex
0
-
Setting Up WPF Projects in Visual Studio 2025
-
Common Mistakes, Errors, and Troubleshooting in WPF Development
-
Installing the WPF workload
90 -
Creating a WPF project
124 -
WPF project structure and code behind files
186 -
Creating our first GUI Element
210 -
Creating a grid with columns and rows
276 -
Fixed, auto and relative sizing
213 -
Creating a perfect grid
26 -
WPF Challenge - Recreate this GUI
71 -
WPF Challenge Solution - Recreate this GUI
237 -
Column span and row span
120 -
Creating GUI elements with C Sharp.mp4
262 -
Element properties for styling and positioning
155 -
Button click and event handlers
263 -
Todo List application intro and project setup
151 -
Creating the grid, button and text box
373 -
Creating the scrollview and stackpanel
275 -
Setting x name attributes for access
218 -
Adding the todo creation logic
400 -
Introduction ContentControl and UserControl
89 -
Creating ContentControl and UserControl for login
242 -
Designing the LoginView
352 -
Displaying the LoginView UserControl
260 -
Creating and displaying InvoiceView UserControl
333 -
Data Binding introduction
148 -
Setting up the data to bind
246 -
One-Way data binding
324 -
Two Way Databinding
92 -
One Way To Source Databinding
132 -
One Time Databinding
74 -
ListBox introduction
313 -
ListBox ItemSource
273 -
ListBox ItemTemplate
294 -
ListBox accessing selected data
359 -
Next application (login functionality)
41 -
Creating the project and login user control
297 -
Adding the password box
332 -
Environment variables
126 -
Using the environment variable for login
370 -
Password change event
255 -
How to move on
49
-
WPF Currency Converter - Project overview and setup
504 -
WPF Currency Converter - Rectangles and Gradients
560 -
WPF Currency Converter - Setting Up Stack Panel and Labels
813 -
WPF Currency Converter - Customizing Buttons and Implementing Click Events
651 -
WPF Currency Converter - Creating Input Fields with Text Box and Combo Box
560 -
WPF Currency Converter - Binding Values to Combo Boxes
640 -
WPF Currency Converter - Input Validation and Completing the Logic
700 -
PROJECT CODE can be found HERE!
-
Databases Intro
64 -
Setup MS SQL Server and VS For DB work
572 -
Intro And Setting Up Our DataSet And Table
815 -
Relationship or Associative Tables
847 -
Showing Data in a ListBox
816 -
Showing Associated Data
624 -
Displaying all Animals In The ListBox
491 -
Deleting From A Table With A Click
967 -
Added Note - Adding the base tables and entries back
-
Delete Animals, Remove Animals and Add Animals Functionality
1020 -
Updating Entries in Our Tables
953 -
Databases Outro
39
-
WPF Currency Converter - Building a Currency Converter with Database Integration
619 -
WPF Currency Converter - Designing the User Interface for Currency Conversion
684 -
WPF Currency Converter - Understanding Data Grid Functionality and Properties
612 -
WPF Currency Converter - Setting up a Database for Currency Conversion
709 -
WPF Currency Converter - Implementing SQL Connections for Database
809 -
WPF Currency Converter - Implementing Save Button Functionality
618 -
WPF Currency Converter - Adding a New Currency Entry
570 -
WPF Currency Converter - Inserting and Editing Data in the Database
843 -
PROJECT CODE can be found HERE!
-
Linq Intro
52 -
Linq gentle Introduction
236 -
Linq Demo
335 -
Linq with Lists - and our University Manager Part 1
808 -
Sorting and Filtering with Linq
910 -
Creating collections based on other collections
412 -
Linq with XML
1058 -
Setting up the project for LinqToSQL
948 -
Inserting Objects into our Database
1152 -
Using assiociative tables with Linq
985 -
Joining tables next level
562 -
Deleting and Updating
810 -
Linq Outro
33
-
Clean Code Presentation
186 -
Clarity and precision in naming
154 -
Naming convention cases
257 -
Special convention for naming private fields
126 -
Naming classes and methods
66 -
Naming boolean values
85 -
Meaning through naming
212 -
Writing good comments
272 -
Code TODOs
120 -
Code documentation through Summary
406 -
Formatting code
172 -
Organizing files and namespaces
237 -
Method structuring
252 -
Using braces
96 -
DRY principle (Don't repeat yourself)
476 -
KISS Principle (Keep it simple, stupid)
277 -
Exception handling
331 -
SOLID presentation
174 -
Single Responsibility Principle (SRP)
431 -
Open-Closed Principle (OCP)
393 -
Liskov Substitution Principle (LSP)
415 -
Interface Segregation Principle (ISP)
331 -
Dependency Inversion Principle (DIP)
350 -
Congrats on completing the C# clean code section
30
-
An Introduction to C# Generics
504 -
Creating a generic class
451 -
Using a generic class type in a method
333 -
Multiple generic types in a class
318 -
Generic methods without generic classes
349 -
Constraints for generics classes
195 -
Custom interface constraint
345 -
Constraints for generic methods
231 -
Generic interfaces
329 -
Constraints for generic interfaces
333 -
Combing generic classes and generic interfaces
284 -
Generic reflections
359 -
Action<> generic delegate
390 -
Func<> generic delegate
417 -
Predicate<> generic delegate
270 -
C# Delegates Challenge "Task Management System"
-
Generics Challenge Solution "Task Management System"
768 -
Congrats on completing the generics section
28
-
TDD Introduction
73 -
What is TDD - Test Driven Development
224 -
Create Project and Write First Test
313 -
Refactoring and Adding Domain
316 -
Adding Web API
510 -
Test First Approach
619 -
Assertion Message
282 -
Fluent Assertions
416 -
Test Conditions and Prerequisites
234 -
Setting Up Flight Project
69 -
Translating a Scenario to Test
601 -
Red Green Refactor
270 -
Given When Then Pattern And Avoid Overbooking Scenario Discovery
340 -
Avoid Overbooking Scenario
451 -
Test Trustwhortiness And Devils Advocate
388 -
Practical Devils Advocate For Remaining Number of Seats
335 -
Paremeterized Tests
325 -
Discovering new scenarios by checking if the production code is complete.
709 -
Refactoring "remember_bookings."
149 -
Rules of TDD
254 -
Scenario: Cancel bookings using Test-Driven Development Rules
602 -
Handle Cancel Booking & No Booking Found
478 -
How You Discover New Scenarios
140 -
Application Layer Testing
168 -
Scenario: Application Layer Booking Part One
556 -
Scenario: Application Layer Booking Part Two
482 -
Scenario: Application Layer Booking Part Three
455 -
Configure In Memory Database
472 -
Parameterize Book Flights Test
123 -
Implementing Booking Service
485 -
Refactoring Booking Service
213 -
Create Test for Cancelling Bookings
541 -
Finalize Cancel Booking
304 -
Naming Conventions
166 -
Test Suit as Documentation
115 -
Application Layer
39
-
Intro Unity Basics
155 -
Installing Unity
-
Overview of the Unity Interface
463 -
Creating your own Layout
226 -
Player Movement
792 -
Making Sure We Make Changes Correctly
185 -
Physis Basics
275 -
RigidBody - A Physical Body
578 -
Colliders And Their Different Types
724 -
Triggers
621 -
Prefabs And GameObjects
311 -
Components And More On Prefabs
252 -
Keeping The Hierarchy Tidy
149 -
Class Structure
538 -
Mathf And Random Class
297 -
Unity Basics Outro
107
-
Pong Introduction
125 -
Basics - UI Elements
407 -
Basics - Accessing Text Through Code
344 -
Basics - Buttons
348 -
Basics - Switching Scenes
575 -
Basics - Play Sound
532 -
Project Outline - Pong
446 -
Creating The Main Menu
903 -
Switching Scenes and Using Buttons
541 -
Building Our Game Scene
838 -
2D vs 3D Colliders and Rigidbody For Our Ball
416 -
Moving Our Ball Left And Right
674 -
Racket Movement
583 -
Bouncing Off Correctly
552 -
Scoring System
502 -
Restarting A Round
327 -
The Game Over Screen
263 -
Adding Sound To The Game
446 -
Adding a Basic AI
317 -
Chapter Summary
82
-
Chapter Intro
45 -
Zig Zag Intro
40 -
Basics- Instatiating (Creating Via Code) An Object
302 -
Basics - Invoke And InvokeRepeating For Delayed Calls And Repeated Calls
262 -
Basics - Playerpreferences - Saving Data
398 -
Basics - Raycast
468 -
Setup For Zig Zag
451 -
Setting The Perspective
443 -
Moving The Character
388 -
Make Camera Follow Player
212 -
Animate The Character
810 -
Start The Game
529 -
Restart The Game
240 -
Collecting Crystals And Increasing The Score
575 -
Adding A Highscore
308 -
Adding The Particle Effect
778 -
Background Music Loop
386 -
Procedural Creation Of Our Map
1253
-
Chapter Intro
107 -
Create Fruits And Explode Them
982 -
Fruit Spawner
1012 -
Creating Our Blade
818 -
GUI and Bombs
1277 -
Game Over and Restart
732 -
Adding The Highscore
545 -
Extend The Game
406 -
Prepare Code For Android
395 -
Test On An Android Device
241 -
Make Some Adjustments
135 -
Adding Unity Ads to Your Game
388 -
Setting Up Your Device as Developer Device
80 -
Adding Sound
585
Requirment
-
Visual Studio Community Edition (FREE)
-
A Windows (10) PC is required for the WPF and Database portions of the course
Outcomes
-
Learn the fundamentals of programming using C#
-
Learn how to use variables, methods, loops, conditions
-
Fully understand how OOP (object oriented programming) works and how to use it
-
Build beautiful GUIs (Graphical User Interfaces) with WPF (Windows Presentation Foundation)
-
Create video games using C# and Unity 3D
-
Learn how to handle errors and avoid them
-
Work with files, folders, text and paths in .NET framework
-
Learn how to use LINQ and Lambda Expressions
-
Learn how to use Databases with MSSQL
-
Learn advanced techniques like threading and asynchronus development
-
Learn how to use C# generics to build senior-level software
-
Learn Clean Code with SOLID and all of its best practices
0 Student
3 Courses
0 review