Кроме того, на что уже был дан ответ, Производительность, символика и полнота есть один действительный случай, который я видел для частных свойств вместо частного поля:
public class Item
{
private Item _parent;
private List<Item> _children;
public void Add(Item child)
{
if (child._parent != null)
{
throw new Exception("Child already has a parent");
}
_children.Add(child);
child._parent=this;
}
}
Допустим, мы не хотим показывать Parent по какой-либо причине, но мы также можем захотеть сделать проверку достоверности. Может ли родитель быть добавлен в качестве ребенка к одному из своих детей?
Чтобы решить эту проблему, вы можете сделать это свойством и выполнить проверку для циклических ссылок.