C# 9 shipped with .NET 5 in November. One change included is init only properties which allow us to have immutable (non-changeable) classes without some of the downsides associated with pre C# 9 approaches.
As can be seen below in C# 8 we’d typically have getters with no setters which gives us immutability…great.. but it means we need a constructor and we can’t use the more shorthand object initializer (C# 3.0) syntax which many developers prefer.
In C# 9 we can use the init keyword which means we can get rid of the constructor and use shorthand object initialization.
This is a small but nice addition to the language and means developers don’t have to choose between ease of use and immutability.
C# 9 Language Features | On .NET | Channel 9 (msdn.com)