Steven Giesel

C# Lowering - What is it and why should I care?

The C# compiler turns one `yield` keyword into an entire state machine. Learn how this hidden process impacts your code's performance and memory usage.

C# Lowering - What is it and why should I care?
#1about 7 minutes

Defining C# lowering and its benefits

C# lowering is the process of transforming high-level language features into simpler constructs, which simplifies the compiler and ensures predictable performance.

#2about 3 minutes

Subtle differences in property getter implementations

The `var` keyword is lowered to its inferred type, while expression-bodied properties can introduce subtle behavioral changes compared to traditional getters.

#3about 4 minutes

How `foreach` is lowered for arrays versus lists

A `foreach` loop is lowered to an index-based `while` loop for arrays but uses the `IEnumerable` pattern with a `try-finally` block for lists, impacting performance.

#4about 2 minutes

The danger of using `async` without `await` in `using` blocks

Combining `IDisposable` with an `async` call without `await` can lead to the object being disposed before the asynchronous operation completes.

#5about 9 minutes

Understanding the `yield` keyword and its performance

The `yield` keyword generates a state machine class to enable deferred execution, trading slower per-item runtime for significantly lower memory allocation.

Related jobs
Jobs that call for the skills explored in this talk.
Picnic Technologies B.V.

Picnic Technologies B.V.
Amsterdam, Netherlands

Intermediate
Senior
Python
Structured Query Language (SQL)
+1

Featured Partners

Related Articles

View all articles

From learning to earning

Jobs that call for the skills explored in this talk.

C# Software Developer

Redline Group
Woking, United Kingdom

Intermediate
CSS
JavaScript
TypeScript
Microsoft SQL Server
C# Software Developer

Copello Global
Stevenage, United Kingdom

£60K
C++
Scrum
Unit Testing
Agile Methodologies
+3
C# Software Engineer

SSE plc
Stevenage, United Kingdom

£57K
C++
Unit Testing
Agile Methodologies
Continuous Integration