Essential Techniques
- 27m 47s
—Why Behind the Scenes Matters
4m 22s
—Hello World Example
4m 29s
—Inspecting IL Code
4m 3s
—Using ILDASM and ILSpy
4m 12s
—Inspecting Runtime State
4m 37s
—Using WinDbg and SOS
4m 59s
—Summary
1m 1s
The CLR and IL in a Nutshell
- 41m 24s
—Introduction to Intermediate Language (IL)
2m 59s
—Essential IL Instructions
2m 29s
—Local Variables in IL
4m 56s
—Basic IL Instructions and Branches
4m 6s
—Analyzing Branches in ILDASM
3m 7s
—Call Instructions and Call Stacks
5m 3s
—Exceptions, Objects, and Arrays
3m 36s
—The Role of JIT Compilation
6m 48s
—Seeing JIT Compilation in Action in WinDbg
5m 14s
—JIT Optimizations
2m 8s
—Summary
0m 53s
C# Compiler Tidbits
- 40m 3s
—Overview of C# Compiler Settings
1m 44s
—Optimization Techniques used by the C# Compiler
4m 3s
—Branch Optimizations
3m 27s
—Inspecting Branching for Loops in ILDASM
3m 43s
—Specifying Compilation Targets
3m 29s
—Inside Windows Runtime Modules
2m 5s
—Constraining Target Platform Architectures
4m 48s
—Language Versions
2m 9s
—Assembly References
5m 17s
—Introducing Portable Library
4m 29s
—Type Forwarders in ILDASM
3m 42s
—Summary
1m 2s
Performance of Imperative C# Code
- 40m 47s
—Compile-Time Constants and Array Initializers
4m 29s
—Inspecting Array Initializers in ILDASM
2m 31s
—The Essentials of Switch Statements
3m 23s
—Optimizations of Switch Statements
5m 22s
—Analyzing Switch Statements in ILDASM
3m 22s
—Switch Statements with Strings
3m 23s
—Behind the Scenes of Switch Statements for Strings in ILDASM
3m 57s
—Final Remarks about Switch Statements
1m 20s
—The Essentials of Events
2m 50s
—Compiler-Generated Add and Remove Accessors
4m 27s
—Building a Custom Event Manager
3m 36s
—Windows Runtime Event Support in C# 5.0
1m 33s
—Summary
0m 31s
Performance of Functional C# Code
- 40m 35s
—Anonymous Methods under the Hood
3m 4s
—Intermezzo on Compiler-Generated Names
1m 42s
—Lambda Expressions and Homoiconicity
1m 50s
—Inspecting Anonymous Methods in ILDASM
2m 58s
—Introduction to Closures
6m 26s
—Display Classes Behind the Scenes
4m 41s
—Closures and Space Leaks
2m 36s
—Debugging a Space Leak using WinDbg and SOS
5m 31s
—Scoping of Foreach Loop Variables in Closures
3m 54s
—Analyzing Foreach Loop Variable Scoping in ILDASM
5m 27s
—Summary
2m 21s
Leveraging C# Extensibility Points, Part 1
- 40m 17s
—Syntactic Sugar in C#
2m 0s
—Foreach Statement and the Enumeration Pattern
2m 30s
—Typing in Foreach Statements
4m 25s
—Operator Overloading in a Nutshell
2m 49s
—Domain Specific Languages (DSLs) using Operator Overloading
3m 0s
—Building a Small Internal DSL
4m 23s
—Lifted Nullable Operators
2m 22s
—Query Expressions and the Query Pattern
3m 19s
—LINQ to Anything Implementation Techniques
2m 23s
—Building a Simple Query Provider
3m 27s
—How Traditional Query Providers Work
3m 50s
—Transparent Identifiers
3m 3s
—Spotting Transparent Identifiers in ILDASM
1m 49s
—Summary
0m 49s
Leveraging C# Extensibility Points, Part 2
- 38m 45s
—Overview of C# Dynamic and the DLR
3m 43s
—The Dynamic Type in C#
2m 23s
—Analyzing Dynamic Typing using ILSpy
5m 48s
—Under the Hood of Dynamic using SOS
4m 40s
—Extending Dynamic with DynamicObject
3m 27s
—Implementing a Simple Expando Object
4m 38s
—Awaitable Types and the Awaiter Pattern
2m 57s
—Compilation of Async Methods
4m 55s
—Implementing a Button Awaiter
5m 11s
—Summary
0m 58s
Generics Behind the Scenes
- 40m 59s
—Introduction to Generic Typing
3m 1s
—Why Generics Matter
2m 4s
—Performance Benefits of Generics
5m 5s
—Generics Under the Hood
3m 8s
—Studying Generic Types using WinDbg and SOS
5m 28s
—Constrained Virtual Calls
2m 2s
—Overview of Generic Constraints
2m 43s
—Co- and Contravariance in Pictures
4m 8s
—Broken Array Covariance
4m 40s
—Generic Variance Modifiers
3m 5s
—Behind the Scenes of Generic Variance
3m 35s
—Summary
1m 54s