C# / .Net Reference Guide

C# / .Net Reference Guide

Arjun Krishna

I wanted to create a list of bookmarks of topics related to C#. I’ll cleanup this list in next two three months.

 

Asynchronous programming

Use of async/await, locks, ThreadPool, and how to avoid deadlocks.

 

Reflection

Use of type introspection to write highly dynamic code.

 

Expression trees

Understand how to build and manipulate expression trees to write Domain Specific Language (DSL) that can be used inside applications.

 

Generics

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.

 

Iterators

Understand IEnumerable, yield, and related facilities.

 

Language Integrated Query (LINQ)

Use C# syntax to access .Net LINQ capabilities and interacting with IEnumerable collections.

 

Resource management

Understanding IDispose and the using construct for explicit resource management.

 

Anonymous Types

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.

 

Nullable Types

Understand the differences between nullable and non-nullable types.

 

Basic OOP

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.

 

Collections

Knowledge in trade-offs of the various standard library generic collections like List, Set, Dictionary, etc.

 

Exception handling

Use of try/catch/finally for managing exceptions.

 

Type System

Understanding the categories of types supported by .Net. Classes, Structures, Enumerations, Interfaces, and Delegates.

 

Input/Output

.Net Facilities for input and output, including reading from files, network and making HTTP requests

 

Transforming data

Parsing and formatting data using String/Datetime/JSON/XML libraries

 

Routing

Direct an incoming request based on the URL pattern.

 

Memory cache

Knowledge about the default memory cache instance, limits, and others.

 

Build a simple REST API Service

Implementing an application to serve REST endpoints.

 

Data Access

Knowledge of database API in .Net, ADO.Net, and Entity Framework.

 

LINQ

 

Roslyn Source Generator

 

Assemblies

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.

 

Parallel Programming

.Net Parallel programming using Task Parallel Library and ParallelLINQ.

 

Attributes

Understand how attributes work and how they can be used in your code to address cross-cutting concerns.

 

Security

Understand .Net guidelines for role-based security, secure coding, and best practices with cryptographic libraries.

 

Memory management

Knowledge of automatic memory management, garbage collection, and how to work with unmanaged resources.

 

Unsafe code

Proficiency in interacting with native code in DLLs and COM libraries.

 

Performant Code

 

New Features