Mise à JOUR: Cette question a été l'objet de mon blog en septembre 2014. Merci pour la grande question!
Il y a un grand débat sur cette question au sein de l'équipe du compilateur lui-même.
Tout d'abord, il est sage de comprendre les règles. Un membre du public d'une classe ou structure est un membre qui est accessible à tout ce qui peut accéder au type contenant. Si un membre du public d'une classe interne est effectivement internes.
Alors maintenant, étant donné une classe interne, doit ses membres que vous souhaitez accéder à l'assemblée d'être marqué comme public ou interne?
Mon avis est: marque tels les membres du public.
J'utilise "public" pour dire "ce membre n'est pas un détail d'implémentation". Un membre protégé est un détail d'implémentation; il y a quelque chose qui va être nécessaire de faire une classe dérivée de travail. Un membre interne est un détail d'implémentation; quelque chose d'autre interne à cette assemblée besoins des membres afin de fonctionner correctement. Un membre du public dit "ce membre représente la clé, documenté fonctionnalités fournies par cet objet."
Fondamentalement, mon attitude est: supposons que j'ai décidé de faire cette classe interne dans une classe publique. Pour ce faire, je veux changer exactement une chose: l'accessibilité de la classe. Si l'activation interne d'une classe dans une classe publique signifie que j'ai aussi tourner un membre interne à un membre du public, alors que le membre a été de la partie publique de la surface de la classe, et il doit avoir été public en premier lieu.
D'autres personnes sont en désaccord. Il y a un contingent qui dit qu'ils veulent être en mesure de jeter un oeil à la déclaration d'un membre et immédiatement savoir si elle va être appelée uniquement à partir de code interne.
Malheureusement, cela ne fonctionne pas toujours très bien; par exemple, une classe interne qui implémente une interface interne a encore d'avoir la mise en œuvre des membres marqués en tant que public, car ils sont une partie de la surface publique de la classe.