Это сделано для того, чтобы сделать ваше свойство доступным только для чтения, чтобы во внешнем мире не разрешалось изменять значение свойства, и только класс, реализующий свойство, может изменять значение свойства, являющегося владельцем свойства.
В качестве примера того, как класс отслеживает количество экземпляров, и только количество экземпляров можно увеличивать / уменьшать изнутри класса, и внешнему миру нельзя разрешать изменять свойство счетчика экземпляров, например ::1001*
public class Customer
{
public Customer()
{
InstanceCount++;
}
//Helps retrieving the total number of Customers
public int InstanceCount { get; private set; } //Count should not be increased by the clients of this class rather should be increased in the constructor only
}
Еще одним преимуществом в некоторых ситуациях является то, что после предоставления частного набора для вашего свойства вы можете предоставить метод Set для изменения значения свойства из внешнего мира, когда вы хотите выполнить некоторые вычисления или проверки полученного значения (которое не является рекомендуется использовать внутри метода Set свойство accessors), а затем изменить значение свойства следующим образом:
public class Customer
{
public string City { get; private set; }
public bool SetCity(string customerCity)
{
//validate that the customerCity is a valid USA city or else throw some business rule exception, and then call below code
City = customerCity
}
}