À ma connaissance, private est la valeur par défaut partout en C#
Pas vraiment - la valeur par défaut est "l'accès le plus restreint disponible pour cette déclaration". Par exemple, pour un type de premier niveau, 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?
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, comme dans votre question (je n'ai jamais aimé cet argument, personnellement, mais je pense que cela vaut la peine d'être mentionné)
- Cela donne l'impression que vous avez délibérément décidé de le rendre privé, plutôt que de simplement suivre les valeurs par défaut.
En ce qui concerne la dernière partie de votre question:
De plus, existe-t-il un cas où l'écriture de "private" (seul) modifiera l'accessibilité du membre?
Oui, pour rendre la moitié d'une propriété plus restrictive que l'autre:
// Getter public, setter public
public int Foo { get; set; }
// Getter public, setter privé
public int Bar { get; private set; }
Je avais l'habitude de suivre les valeurs par défaut partout où je le pouvais, mais j'ai été convaincu (en partie par Eric Lippert) que rendre explicite le fait que vous avez réfléchi et décidé de rendre quelque chose privé est une bonne idée.
Personnellement, je souhaiterais qu'il y ait un moyen de faire cela pour les déclarations scellées/non scellées, aussi, pour les déclarations de type - peut-être même ne pas avoir de valeur 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 juste parce que c'est moins d'effort que de les rendre scellées.
19 votes
Si je me souviens bien, un type "top-level" sera
internal
par défaut cependant.5 votes
La valeur par défaut pour tout n'est pas privée, comme indiqué, et en règle générale, il est préférable d'être explicite.
1 votes
Connexes : Est-ce que C# a besoin du mot clé private ?
2 votes
La valeur par défaut pour tout est "aussi privée que possible." De toute évidence, une classe non imbriquée ne peut pas être privée, sinon rien ne pourrait l'instancier ou l'utiliser. Mais les membres sont privés par défaut, et les classes imbriquées sont privées par défaut. Tout en C# a, par défaut, le niveau de visibilité le plus restreint possible.
0 votes
Autres fils de discussion : Devriez-vous utiliser le modificateur d'accès private s'il est redondant ? et Pourquoi devrais-je marquer les variables privées comme privées si elles le sont déjà ?.
0 votes
Vous avez posé une bonne question de la mauvaise manière. Vous n'auriez pas dû dire "AFAIK private est la valeur par défaut", ce qui n'est pas exact. Cela étant dit, je suis d'accord
private
est un mot-clé pratiquement redondant.0 votes
Possiblement en double de Pourquoi écrire explicitement "private" ?