AFAIK, private est la valeur par défaut partout en C #
Pas tout à fait - la valeur par défaut est "l'accès le plus restreint disponible pour cette déclaration". Ainsi, par exemple, avec un type de niveau supérieur, la valeur par défaut est internal
; pour un type imbriqué, la valeur par défaut est private
.
Alors, quelle est la raison d'écrire ce mot-clé, ou pourquoi existe-t-il même?
Cela le rend explicite, ce qui est bon pour deux raisons:
- Cela rend les choses plus claires pour ceux qui ne connaissent pas les valeurs par défaut, selon votre question (je n'ai jamais aimé cet argument, personnellement, mais j'ai pensé que cela valait la peine de le mentionner)
- Cela donne l'impression que vous avez délibérément décidé de le rendre privé, plutôt que de simplement abandonner les valeurs par défaut.
Quant à votre dernière partie:
De plus, y a-t-il un cas où l'écriture «privée» (seule) changera l'accessibilité du membre?
Oui, pour rendre la moitié d'une propriété plus restrictive que l'autre:
// Public getter, public setter
public int Foo { get; set; }
// Public getter, private setter
public int Bar { get; private set; }
J'avais l' habitude d'utiliser des valeurs par défaut partout où je pouvais, mais j'ai été convaincu (en partie par Eric Lippert) qu'indiquer clairement que vous y avez pensé et que vous avez décidé de rendre quelque chose de privé est une bonne idée.
Personnellement, j'aurais aimé qu'il y ait un moyen de le faire pour les déclarations de type scellées / non scellées - peut-être même pas par défaut. Je soupçonne que de nombreux développeurs (moi y compris si je ne fais pas attention) laissent les classes non scellées simplement parce que c'est moins d'effort que de les sceller.
internal
par défaut.