En dehors de ce qui a déjà été répondu, la performance, la symétrie et l'exhaustivité, il y a un cas valide que j'ai vu pour les propriétés privées au lieu d'un champ privé :
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;
}
}
Disons que nous ne voulons pas exposer Parent pour une raison quelconque, mais nous pourrions également vouloir faire des contrôles de validation. Un parent doit-il pouvoir être ajouté comme enfant à l'un de ses enfants ?
Pour résoudre ce problème, vous pouvez en faire une propriété et effectuer une vérification des références circulaires.