I wanted to create a list of bookmarks of topics related to C#. I’ll cleanup this list in next two three months.
Use of async/await, locks, ThreadPool, and how to avoid deadlocks.
Use of type introspection to write highly dynamic code.
Understand how to build and manipulate expression trees to write Domain Specific Language (DSL) that can be used inside applications.
Understand the generic system and its interactions with inheritance via covariance and contravariance.
Lambda and Delegates
Use anonymous methods, closures, and lambda syntax to write expressive code.
Understand IEnumerable, yield, and related facilities.
Language Integrated Query (LINQ)
Use C# syntax to access .Net LINQ capabilities and interacting with IEnumerable collections.
Understanding IDispose and the using construct for explicit resource management.
Use of dynamic type to interact with types whose shape is determined at runtime.
Types and Variables
Know the difference between value types and reference.
Understand the differences between nullable and non-nullable types.
Use classes and objects to write simple object-oriented code. Understand inheritance facilities and use of interfaces to create compositional object-oriented code.
Properties and Indexers
Using properties and indexers on classes to provide additional safety and expressivity.
Knowledge in trade-offs of the various standard library generic collections like List, Set, Dictionary, etc.
Use of try/catch/finally for managing exceptions.
Understanding the categories of types supported by .Net. Classes, Structures, Enumerations, Interfaces, and Delegates.
.Net Facilities for input and output, including reading from files, network and making HTTP requests
Parsing and formatting data using String/Datetime/JSON/XML libraries
Direct an incoming request based on the URL pattern.
Knowledge about the default memory cache instance, limits, and others.
Build a simple REST API Service
Implementing an application to serve REST endpoints.
Knowledge of database API in .Net, ADO.Net, and Entity Framework.
Roslyn Source Generator
Knowledge of assembly file format, metadata facilities, and how code is linked with other modules.
Globalization and Localization
Understand .Net facilities for developing applications that can be localized into one or more languages.
.Net Parallel programming using Task Parallel Library and ParallelLINQ.
Understand how attributes work and how they can be used in your code to address cross-cutting concerns.
Understand .Net guidelines for role-based security, secure coding, and best practices with cryptographic libraries.
Knowledge of automatic memory management, garbage collection, and how to work with unmanaged resources.
Proficiency in interacting with native code in DLLs and COM libraries.