81 votes

public vs internes méthodes sur une classe interne

<pre><code></code><p>Je pense que Fee() et Fi() sont également accessibles depuis l’ensemble de la classe est déjà interne. J’ai oublie quelque chose ? Y a-t-il une raison pour choisir publiques ou internes pour les méthodes dans un cas comme celui-ci ?</p></pre>

95voto

Reed Copsey Points 315315

Le déclaration remplacera l’accessibilité de la méthode, rendant effectivement interne.

Dans ce cas, l’utilisation interne vs public sur les méthodes aura le même effet. La seule raison pour laquelle que je choisirais les méthodes publiques contre des méthodes internes dans un cas comme celui-ci serait pour faciliter la transition vers une classe publique dans une version ultérieure, si vous choisissez de le faire.

28voto

Marc Gravell Points 482669

En fait - il y a une grande différence si vous utilisez la réflexion ; en particulier, Silverlight pouvez obtenir très en colère si vous essayez d’accéder à des méthodes internes par réflexion, même si vous auriez eu accès. J’ai vu des occasions où j’ai eu à rendre une méthode publique à faire fonctionner sur Silverlight, le code même si cela fonctionne sur .NET régulière.

Vous trouverez peut-être la même chose avec confiance partielle dans .NET ordinaire.

8voto

user1343819 Points 51

Cela ferait une différence lorsque vous souhaitez que votre classe interne pour implémenter une interface. La méthode qui est une implémentation d’une interface, devra être Public.

7voto

eglasius Points 26221

Vous avez raison, à la fois Frais et Fi sera également accessible.

À partir de la Spécification du Langage CSharp 3.0, en vertu de l'article 3.5.2:

L'accessibilité du domaine de imbriquée membre de la M a déclaré dans un type T dans un programme P est définie comme suit (à noter que M lui-même peut éventuellement être un type):

• Si l'déclaré l'accessibilité de M est public, le l'accessibilité du domaine de M est la l'accessibilité du domaine de T.

Donc, même si la Taxe est déclarée comme public, il sera tout aussi accessible que Foo (c'est à dire interne).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X