Je viens de réaliser que le C# construction de la propriété peut également être utilisé avec un privé modificateur d'accès :
private string Password { get; set; }
Bien que cela soit techniquement intéressant, je ne peux pas imaginer quand je l'utiliserais puisqu'un domaine privé implique même moins de cérémonie :
private string _password;
et je ne peux pas imaginer que j'aurai un jour besoin d'être capable d'interner. obtenir mais pas set o set mais pas obtenir un terrain privé :
private string Password { get; }
ou
private string Password { set; }
mais peut-être y a-t-il un cas d'utilisation avec classes imbriquées / héritées ou peut-être lorsqu'un get/set peut contenir logique au lieu de simplement redonner la valeur de la propriété, bien que j'aurais tendance à garder les propriétés strictement simples et à laisser les méthodes explicites faire toute la logique, par ex. GetEncodedPassword()
.
Quelqu'un utilise-t-il les propriétés privées en C# pour une raison quelconque ou s'agit-il simplement d'une de ces constructions techniquement possibles mais rarement utilisées dans le code réel ?
Addendum
Bonnes réponses, en les lisant, j'ai retenu ces utilisations pour les propriétés privées :
- lorsque des champs privés doivent être chargés paresseusement
- lorsque les champs privés nécessitent une logique supplémentaire ou sont des valeurs calculées.
- car les champs privés peuvent être difficiles à déboguer
- afin de "présenter un contrat à soi-même"
- pour convertir/simplifier en interne une propriété exposée dans le cadre de la sérialisation
- envelopper les variables globales à utiliser dans votre classe
2 votes
La technique encouragée par les propriétés privées est auto-encapsulation - voir : sourcemaking.com/refactoring/self-encapsulate-field
0 votes
Duplicata possible de Différences entre les champs privés et les propriétés privées
0 votes
@LBushkin Auto-encapsulation semble concerner les propriétés protégées (ou publiques) et non les propriétés privées.