In this C# training course, students already familiar with C# programming will learn advanced C# techniques.
This advanced C# course is taught using C# 8.
Prerequisites:
Students should have experience with C# and working knowledge of the skills covered in Core Skills: Level 1.
Specifically, you should know:
- How C# works and its place in the world of programming languages
- Its relationship with the Common Language Infrastructure and .NET Framework
- C# data types and operators
- How to write selection statements and loops
- Generic programming and working with collections
- Tools for processing data with C#
- and error handling.
Advanced Topics
- Delegates and events
- Delegates
- Events
- Anonymous types
- Tuples
- The Tuple class
- Value tuples
- Pattern matching
- The is expression
- The switch expression
- Regular expressions
- Overview
- Matching input text
- Finding substrings
- Replacing parts of a text
- Extension methods
- Garbage collection
- Finalizers
- The IDisposable interface
- The using statement
- Platform invoke
- Unsafe code
- Functional programming
- Functions as first-class citizens
- Lambda expressions
- LINQ
- Standard query operators
- Query syntax
- More functional programming concepts
- Partial function application
- Currying
- Closures
- Monoids
- Monads
- Summary
- Test what you learned
- Understanding reflection
- Dynamically loading assemblies
- Understanding late binding
- Using the dynamic type
- Attributes
- System attributes
- User-defined attributes
- How to use attributes?
- Attribute targets
- Assembly attributes
- Attributes in reflection
- What is a thread?
- Creating threads in .NET
- Using the ThreadPool class
- Understanding synchronization primitives
- The task paradigm
- Synchronous implementations of asynchronous methods
- Occasionally asynchronous methods
- Breaking the task chain – blocking the thread
- Manually creating a task
- Long-running tasks
- Breaking the task chain – fire and forget
- Task and exceptions
- Canceling a task
- Monitoring the progress of a task
- Parallelizing tasks
- Signaling tasks with the TaskCompletionSource object
- Synchronization context
- Using the .NET command-line interface (CLI)
- Developing on Linux distributions
- Preparing the development box
- Writing cross-platform aware code
- What .NET Standard is and how can it help the application design
- Creating a .NET Standard library
- Consuming NuGet packages
- Adding packages to a project
- Migrating from .NET Framework to .NET Core
- Analyzing your architecture
- Preparing the migration process
- Migrating the libraries
- Migrating the tests
- Migrating the desktop projects
- Migrating ASP.NET project
- Summing up the migration steps
- Publishing an application
- Publishing as an FDD
- Publishing as an SCD
- Understanding other publishing options
- What is unit testing?
- What are Microsoft tools for unit testing?
- Creating a C# unit testing project
- Writing unit tests
- Analyzing code coverage
- The anatomy of a test
- Writing data-driven unit tests
- Data from attributes
- Dynamic data
- Data from external sources