Skip to content

C# Feature – Init-only setters

init enables immutable patterns by allowing property initialization in object initializers while preventing later mutation.

C# 9 (2020)

public class Person { public string Name { get; private set; } }
public class Person { public string Name { get; init; } }
var p = new Person { Name = "Ada" };
public record User(string Id)
{
public string Email { get; init; }
}
  • Combine with records for immutable data models.
  • C# 9: init introduced for object initializers.