top of page

C # Master Class

So, you know C#. You've learned the syntax, learned how to write classes and interfaces, know your lists from your lambdas, and have some experience using both the C# language and the .Net framework. Perhaps you took our Beginner and advanced C# courses - or you already know what they teach. What next?

The C# Masterclass moves beyond the syntax and semantics. Its focus is on applying C#, along with selected parts of the .NET framework, to build elegant, extensible, multi-paradigm solutions to everyday problems. You'll learn how to apply classes and interfaces to achieve solid OO designs, how to work efficiently with lambda expressions, how to tame asynchrony with using the async/await keywords - and much more!

The course is up to date with the latest C# 10 and most exercises are done targeting the latest version of .NET 6. Even if you don't use .NET 5/6 or .NET Core today, this course is still relevant and most of the concepts taught in this course work on all platforms.

The course consists of plenty of hands on exercises where you get to apply the things you learn.

What you will learn


  • C # History

  • .NET Standard


Roslyn compiler

  • Analyzers

  • Source Generators


.NET Core

  • .NET Core overview


Being Effective with Visual Studio 2019

  • Advanced Visual Studio features

  • Intelli Code

  • Live Share


Lambda and Delegate refresher

  • Delegates

  • Lambda expressions

  • Func and Action

  • Predicate


Value Tuples

  • Tuples vs Value Tuples

  • Deconstruction

  • Discard


Pattern matching

  • Switch expressions

  • Property patterns

  • Positional patterns

  • Tuple patterns

  • Relational and logical patterns


Working with null

  • Zero-conditional operator

  • Non-nullable reference types

  • Zero-forgiving operator

OO and dynamic

  • Dynamic objects

  • Late binding


Classes: outside-in

  • Object Oriented design

  • Command-Query Separation

  • Command Pattern


Dependency Inversion

  • The Dependency Inversion Principle

  • Injecting dependencies

  • DI containers

  • .NET Core generic host

Higher Order Programming

  • The lambda wrapper pattern

  • Closure semantics, and its uses

  • Function generators

  • Lambda vs local functions


Reflective Programming

  • Runtime structure of a program

  • Reflection

  • Creating types


Event driven architecture

  • Complexity and boundaries

  • Event aggregator pattern

  • Publish / subscribe

  • MediatR

  • C # 9 Records and immutability


Asynchronous programming

  • The Task abstraction

  • The Thread pool

  • Waiting for tasks

  • Continuations

  • Async and await keywords


Encoding and Unicode

  • Understanding unicode

  • UTF-8 and UTF-16 encoding

  • Homographs

Target audience

This course is aimed at those who have a working knowledge of C# and want to learn to apply the language in a more powerful way, taking advantage of all it has to offer.


Participants should be comfortable with programming in C#. Some previous experience with generics, lambda expressions, and Linq queries is strongly suggested.

25 900 SEK ex VAT

Provided on request

- The course is given remote or in classroom
- Contact us for upcoming courses
- If you are a team there is an opportunity for content adaptation based on your needs

Duration: 3 days, or 6 half days             

Level: Master

Language: English/Swedish                  

Course code: T220


Very good, alot of new stuff and good repetition of old stuff. Even though some concepts are familiar in other languages it feels good to have seen them in C#.


I really like the exercises because the main way for me to gain knowledge is through practice. The concepts presented are relevant and most of them used in the daily work.


I think it was great. I really like the approach of showing what happens beneath the surface using sharplab. It gives you a deeper understanding when reasoning about the code I think.


Great material and superb instructor. The course delved into advanced topics in an intuitive way that did not require an unreasonable amount of expertise in the specific language but more of an overall programming know-how.


bottom of page