プロパティへの代入がコンストラクタ内のみなら、そのプロパティに private set を定義する必要はない

using System;

class Person
{
    public string Name { get; } // 代入はコンストラクタでのみ。private set; は不要
    public int Age { get; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

class Program
{    
    public static void Main()
    {
        var p = new Person("Bob", 23);
        Console.WriteLine($"{p.Name} {p.Age}"); // Bob 23

        // コンパイルエラー: The Property 'Person.Name' has no setter
        // p.Name = "Alice";
    }
}