#591 – January 18, 2026
build high-performance, thread-safe producer-consumer applications using System.Threading.Channels
Channels in C#
8 minutes by Adrian Bailador
Learn how to build high-performance, thread-safe producer-consumer applications using System.Threading.Channels. Adrian explores bounded and unbounded channels, backpressure strategies, and real-world implementation patterns.
Changing immutable collections
7 minutes by Jon Skeet
Jon describes migrating a C# election website from ImmutableList and ImmutableDictionary to ImmutableArray and FrozenDictionary. The change better matched how the code builds collections once and then only reads them. Migration was mostly simple, with some extra work around value types and nullability. Benchmarks showed real performance improvements, especially for read-heavy validation, with no added complexity.
C# 14 extension members: Complete guide
8 minutes by Laurent Kempé
Extension methods have been a core C# feature since version 3.0, enabling developers to add methods to types without modifying source code. With C# 14 and .NET 10, Microsoft introduces extension members—a powerful enhancement that extends beyond methods to include properties, operators, and static members.
Using large language models in C# in 2026
7 minutes by Jeremy Likness
As a .NET developer you shouldn’t have to choose a single provider or lock into a single solution. That’s why the .NET team invested in a set of extensions that provide consistent APIs for working with models that are universal yet flexible. It also enables scenarios such as middleware to ease the burden of logging, tracing, injecting behaviors and other custom processes you might use.
Named global query filters were updated in EF Core 10
7 minutes by Anton Martyniuk
Entity Framework Core offers global query filters that automatically apply filtering rules to database queries. These filters are especially useful for soft deletion and multi-tenant applications. EF Core 10 renamed them to Named Query Filters and now supports multiple filters per entity. This feature helps ensure data integrity and simplifies code by automatically applying filters like excluding deleted records or isolating tenant data.
And the most popular article from the last issue was: