Skip to main content

C#9- Record types

One of the most anticipated features coming in C#9 are Record types. Record types make it easy to create immutable reference types in .NET. They become the perfect fit for Value Objects in DDD terms.

A new keyword is introduced to support this: record. The record keyword makes an object immutable and behave like a value type.

An example:

You can even write this using a shorter syntax using positional records:

But what if you want to change the person name? How can we do this knowing that the object is immutable? Do I need to copy all properties into a new object?

Let’s introduce the with keyword to fix this. It allows you create an object from another by specifying what property changes: