Table of Contents
All code examples are available on GitHub: https://github.com/Dixin/CodeSnippets.
1. Functional programming and LINQ paradigm
1. Getting started with .NET/Core, C# and LINQ
■ Cross platform .NET, C# and LINQ
■ .NET Framework
■ Parallel LINQ
■ .NET Core, UWP, Mono, Xamarin and Unity
■ .NET Standard
■ C# functional programming
■ This tutorial
■ Author
■ Code examples
■ Start coding
■ Start coding with Visual Studio (Windows)
■ Start coding with Visual Studio Code (Windows, macOS and Linux)
■ Start coding with Visual Studio for Mac (macOS)
2. Programming paradigms and functional programming
■ Programming paradigms
■ Imperative programming vs. declarative programming
■ Object-oriented programming vs. functional programming
3. LINQ Overview
■ One language for different data domains
■ LINQ to Objects
■ Parallel LINQ
■ LINQ to XML
■ LINQ to DataSets
■ LINQ to Entities
■ LINQ to SQL
■ LINQ to NoSQL (LINQ to CosmosDB)
■ LINQ to JSON
■ LINQ to Twitter
■ Productivity
■ Local query vs. remote query
2. Functional programming in-depth
1. C# language fundamentals
■ Types and members
■ Built-in types
■ Reference type vs. value type
■ default literal expression
■ ref structure
■ Static class
■ Partial type
■ Interface and implementation
■ IDisposable interface and using statement
■ Generic type
■ Type parameter
■ Type parameter constraints
■ Nullable value type
■ Auto property
■ Property initializer
■ Object initializer
■ Collection initializer
■ Index initializer
■ Null coalescing operator
■ Null conditional operator
■ throw expression
■ Exception filter
■ String interpolation
■ nameof operator
■ Digit separator and leading underscore
2. Named Function and function polymorphism
■ Constructor, static constructor and finalizer
■ Static method and instance method
■ Extension method
■ More named functions
■ Function polymorphisms
■ Ad hoc polymorphism: method overload
■ Parametric polymorphism: generic method
■ Type argument inference
■ Static import
■ Partial method
3. Local function and closure
■ Local function
■ Closure
■ Outer variable
■ Implicit reference
4. Function input and output
■ Pass by value vs. pass by reference (ref parameter)
■ Pass by read only reference (in parameter)
■ Output parameter (out parameter) and out variable
■ Parameter array
■ Positional argument vs. named argument
■ Required parameter vs. optional parameter
■ Caller information parameter
■ Return by value vs. return by reference
■ Return by read only reference
5. Delegate: function type, instance, and group
■ Delegate type as function type
■ Function type
■ Generic delegate type
■ Unified built-in delegate types
■ Delegate instance as function instance
■ Delegate class and delegate instance
■ Delegate instance as function group
■ Event and event handler
6. Anonymous function and lambda expression
■ Anonymous method
■ Lambda expression
■ Call anonymous function
■ Closure
■ Expression bodied function member
7. Expression tree: Function as data
■ Lambda expression as expression tree
■ Code as data
■ .NET expressions
■ Compile expression tree at runtime
■ Traverse expression tree
■ Expression tree to CIL at runtime
■ Expression tree to executable function at runtime
■ Expression tree and LINQ remote query
8. Higher-order function, currying and first class function
■ First order and higher-order function
■ Curry function
■ => associativity
■ Partial apply function
■ Uncurry function
■ First-class function
9. Function composition and chaining
■ Forward and backward composition
■ Forward pipe
■ Fluent chaining
■ Fluent extension methods
■ LINQ query method composition
10. LINQ query Expression
■ Syntax and compilation
■ Query expression pattern
■ LINQ query expression
■ Query expression vs. query method
11. Covariance and contravariance
■ Non-generic function type
■ Generic function type
■ Generic interface
■ Generic higher-order function type
■ Array
■ Variances in .NET and LINQ
12. Immutability, anonymous type and tuple
■ Immutable value
■ Constant
■ using statement and foreach statement
■ this reference for class
■ Function's readonly parameter and readonly return
■ Local variable by readonly reference (ref readonly variable)
■ Immutable value in LINQ query expression
■ Immutable state (immutable data type)
■ Type with constant field
■ Immutable class with readonly instance field
■ Immutable structure (readonly structure)
■ Immutable anonymous type
■ Immutable tuple vs. mutable tuple
■ Construction and element name
■ Deconstruction
■ Tuple assignment
■ Immutable collection vs. readonly collection
13. Pure function
■ Referential transparency and side effect free
■ PureAttribute and code contracts
■ Purity in .NET
14. Asynchronous function
■ Task, Task<TResult> and asynchrony
■ Named async function
■ Awaitable-awaiter pattern
■ Async state machine
■ Generalized async return type and async method builder
■ ValueTask<TResult> and performance
■ Runtime context capture