Это делается для того, чтобы ваша собственность была доступна только для чтения, чтобы внешнему миру не разрешалось изменять значение свойства, и только класс, реализующий свойство, может изменить значение свойства, являющегося владельцем свойства. В качестве примера того, как класс отслеживает его количество экземпляров и подсчитывать экземпляр может быть только увеличение/уменьшение внутри класса и внешним миром не должно быть позволено изменить экземпляр сосчитать свойства, например:
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), а затем измените значение свойства следующим образом:
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
}
}