-
Learning by doing
-
Trainers with practical experience
-
Classroom training
-
Detailed course material
-
Clear content description
-
Tailormade content possible
-
Training that proceeds
-
Small groups
In the Advanced C# Programming course, participants deepen their knowledge of modern C# features such as asynchronous programming, LINQ, dependency injection, reflection, and performance optimization.
The course starts by exploring advanced language features such as nullable reference types, records, enhanced pattern matching, local functions, dynamic types, and advanced string handling.
Participants dive into delegates, event handling, lambda expressions, multicast delegates, expression trees, asynchronous delegates, and practical usage patterns.
The focus is on using generics with constraints, covariance and contravariance, creating custom collections, working with immutable and concurrent collections, and advanced dictionary techniques.
Participants learn LINQ query and method syntax, deferred execution, custom operators, and the basics of functional programming including immutability and higher-order functions.
This module covers async/await, Task Parallel Library (TPL), ValueTask optimizations, cancellation tokens, deadlock prevention, and working with IAsyncEnumerable for async streams.
Participants learn about dependency injection patterns, mocking and testing with frameworks like Moq, applying TDD, and managing services correctly in .NET Core applications.
This module focuses on reflection, dynamic loading of assemblies, working with attributes, dynamic object creation, late binding, and practical use cases for reflection.
Participants gain insight into garbage collection internals, the dispose pattern, memory profiling, object pooling, stackalloc optimization, and improving async performance.
Finally, the course covers exception handling best practices, logging, using source generators, global using statements, native code interoperability, and writing clean, maintainable code.
The Advanced C# Programming course is intended for experienced C# developers who want to deepen their expertise and master modern C# language features.
Solid knowledge of C# and .NET, experience with object-oriented programming, and familiarity with basic asynchronous programming concepts are required.
The training consists of interactive theory sessions combined with live demonstrations and extensive hands-on labs under the guidance of an experienced trainer.
Participants will receive a certificate of completion for the Advanced C# Programming course after successfully completing the training.
Module 1: Advanced C# Features |
Module 2: Delegates and Lambdas |
Module 3: Generics |
Nullable Reference Types Pattern Matching Enhancements Records and Value-Based Equality Tuples and Deconstruction Local Functions Target-Typed New Expressions Default Interface Methods Dynamic Types Using Span Advanced String Manipulation |
Delegates Deep Dive Multicast Delegates Events and Event Handling Anonymous Methods Lambda Expressions Expression Trees Func, Action, Predicate Event Aggregator Pattern Asynchronous Delegates EventHandler |
Generic Methods and Classes Generic Constraints Covariance and Contravariance Collections Overview IEnumerable, ICollection, IList Custom Generic Collections Immutable Collections Concurrent Collections Collection Initializers Advanced Dictionary Usage |
Module 4: Functional Programming |
Module 5: Asynchronous Programming |
Module 6: Dependency Injection |
Introduction to LINQ Query Syntax vs Method Syntax LINQ to Objects Deferred vs Immediate Execution Custom LINQ Operators Func and Action in LINQ Functional Programming Concepts Immutability in C# Higher-Order Functions Pipeline and Fluent APIs |
Async and Await Deep Dive Task Parallel Library (TPL) ValueTask and Memory Optimization Parallel.For and Parallel LINQ Cancellation Tokens Exception Handling in Async Code SynchronizationContext Deadlocks and Best Practices Channels and Dataflow IAsyncEnumerable and Async Streams |
Principles of DI Service Lifetimes Constructor Injection Method Injection Property Injection Mocking and Stubbing Using Moq and NSubstitute Unit Testing Best Practices Test-Driven Development DI in .NET Core |
Module 7: Dynamic Programming |
Module 8: Memory Management |
Module 9: Advanced Topics |
Reflection Basics Loading Assemblies Dynamically Reading Metadata Custom Attributes Attribute Usage and Creation Dynamic Object Manipulation ExpandoObject Dynamic Keyword Late Binding Reflection Scenarios |
Garbage Collection in Depth Dispose Pattern and IDisposable Memory Profiling Tools Avoiding Memory Leaks Object Pooling Stackalloc and Span Performance Profiling Async Performance Optimization BenchmarkDotNet for Microbenchmarks High-Performance C# Coding |
Best Practices for Exceptions Logging and Monitoring Code Analysis Tools (Roslyn) Source Generators Global Using Statements Nullable Contexts Best Practices Minimal APIs Working with Files and Streams Native Code Interoperability Writing Clean Code |