Public sealed record for DTOs in Modern C#
When building APIs, message contracts, or internal application boundaries, DTOs are everywhere.
Traditionally, DTOs have been implemented as mutable classes, but since C# 9, records offer a far better abstraction for this use case.
In this post, I’ll explain why I almost always prefer public sealed record for DTOs.
26 January 2026