C# Lowering
Explains C# 'lowering' - how high-level syntax like foreach and async is transformed into simpler constructs by the compiler.
Steven Giesel is a Senior Software Engineer and Microsoft MVP with over 13 years of experience, specializing in .NET and modern backend development. He shares deep technical knowledge across topics such as C#, EF Core, RavenDB, distributed systems, and cloud-native architectures, and is an active speaker in the .NET community.
323 articles from this blog
Explains C# 'lowering' - how high-level syntax like foreach and async is transformed into simpler constructs by the compiler.
Explains why deep code nesting is problematic and demonstrates refactoring techniques like extraction and inversion to reduce complexity in C#.
Explains the new C# 12 primary constructor feature, comparing it to records and detailing its syntax and usage.
Explains software cohesion as a metric for refactoring, with a C# example showing how to split a low-cohesion class.
Entity Framework 8 introduces raw SQL queries for unmapped types, reducing boilerplate code for developers.
A tutorial on implementing a simple, reusable pagination solution for Entity Framework using a PagedList class and extension method.
Explains the misconception that Tasks in C# are for multithreading, clarifying they represent asynchronous operations, not threads, and are not primarily for performance.
A guide on using GitHub repositories as a professional portfolio to impress employers and land tech jobs, focusing on project presentation and code quality.
Introduces a .NET tips and tricks website and a high-performance ValueStringBuilder project, showcasing low-allocation string building techniques.
Introducing .NET 7's StringSyntaxAttribute to add semantic meaning to string parameters, enabling better IDE support for regex, dates, and formats.
Explains the new C# 12 feature allowing default parameter values in lambda expressions, with examples and usage in Minimal APIs.
Explains the pitfalls of comparing ReadOnlySpan<char> objects in C#/.NET, highlighting differences from string comparison due to memory representation.
A guide to organizing a .NET Dependency Injection container using extension methods for better structure and maintainability.
A comprehensive guide to the various collection-like types in .NET (C#), explaining their differences, use cases, and best practices for selection.
A guide to building a simple Dependency Injection container in .NET, explaining IoC and DI concepts with code examples.
Explains how to delete a database record in Entity Framework without loading it first, covering both classic and .NET 7+ methods.
An analysis of ChatGPT's capabilities and limitations for .NET and general programming, including code generation accuracy and its impact on platforms like Stack Overflow.
Explains the new Environment.IsPrivilegedProcess API in .NET 8 for checking if a process has administrator rights.
Explains the key differences between abstraction and encapsulation, two fundamental object-oriented programming concepts.
Explores how to make a StringBuilder enumerable in C# using compiler duck typing and extension methods, despite it not implementing IEnumerable.