Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
What's New in C# 13: params Collections, Lock and Partial Properties
C# 13 next to its C# 10 equivalents: the new Lock type and the CS9216 trap, params collections with an allocation measurement, ref structs implementing interfaces and allows ref struct, partial properties, OverloadResolutionPriority, the \e escape and ^ indexes in initializers.
C# Async and .NET 9–10: Task.WhenEach, the Lock Type and Async LINQ in the Framework
The .NET 9 Task.WhenEach that replaces the WhenAny loop and how it handles failed tasks, System.Threading.Lock recognized by the C# 13 lock statement and its limits (CS9216, CS1996, CS4007, CS9202), async LINQ moving into the framework in .NET 10, async Select, and fixing the clash with the System.Linq.Async package.
LINQ and .NET 9: CountBy, AggregateBy and Index
LINQ in .NET 9: CountBy, which returns a sequence rather than a dictionary, AggregateBy for per-key accumulation and a BenchmarkDotNet measurement of their memory advantage over GroupBy, Index() instead of Select((x, i) => ...), the Queryable counterparts and the mutable seed trap.
What's New in .NET 9: Built-in OpenAPI, Scalar and HybridCache in ASP.NET Core
.NET 9 drops Swashbuckle from the template: AddOpenApi/MapOpenApi, transformers, Scalar and Swagger UI, stampede-safe HybridCache, TypedResults.InternalServerError, StatusCodeSelector, C# 13 and 24-month STS support.