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

Introduction

  • 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.

Prerequisites

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

tore-kvadrat-BW-V2.jpg

Trainer Tore Nestenius

20 720 SEK 

ONLINE

Duration: 3 days, or 6 half days             

Level: Master

Language: English/Swedish                  

Course code: T220

The course is given on request

17-19 + 24-26/1  2022, 6 halvdagar

REFERENCES

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#.

PARTICIPANT

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

PARTICIPANT

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.

PARTICIPANT

Great material and superb instructor. The course delved in to 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.

KURSDELTAGARE