Understanding Init-only setters
In C#, we use object initializers, which were introduced in C# 7.0, to set the values of properties by making them settable. But if we wish to have them set only during object initialization, we need to write a lot of boilerplate code. In C# 9.0, with init-only setters, can let the property be initialized during object creation. Init-only setters can be declared for any class or struct.
The following code snippet defines the Order class with OrderId as an init-only setter. This enforces OrderId to be initialized only during object creation:
public class Order
{
        public int OrderId { get; init; }
        public decimal TotalPrice { get; set; }
}
			We can instantiate the Order class and initialize OrderId at the time of object creation, as shown in the following code snippet:
class Program
{
    static void Main(string[] args)
  ...