98 votes

interne vs public en c #

Je souhaite connaître la différence entre les modificateurs de visibilité public et internal .

Quand devrions-nous utiliser internal sur une classe et quand public ? Je suis confus avec quand une méthode devrait être public ou internal .

J'ai lu que internal est accessible via l'Assemblée, alors que public peut également être utilisé via l'ensemble où la différence réside.

108voto

Program.X Points 3831

public est visible à partir de n'importe où.

internal est visible que dans une assemblée

Vous avez tendance à usage interne seulement de protéger interne de l'Api. Par exemple, vous pourriez vous exposer à plusieurs surcharges de la méthode:

public int Add(int x, int y)
public int Add(int x,int y, int z)

Tous deux appel de la méthode interne

internal int Add(int[] numbers)

Vous pouvez ensuite mettre beaucoup de sophistication d'une méthode, mais de "protéger" à l'aide de façade de méthodes qui peuvent aider le programmeur à l'appel à la méthode correctement. (La méthode de mise en œuvre avec le tableau de paramètre peut avoir une limite arbitraire de valeurs, par exemple.)

Également intéressant de noter que l'utilisation de la Réflexion, de tout et de toutes les méthodes sont remboursables quel que soit leur visibilité. Un autre "hack" pour le contrôle de l'accès à l'interne caché Api.

32voto

Dr TJ Points 1042

internal est utile lorsque vous souhaitez déclarer un membre ou un type dans une DLL, pas en dehors de cela ...
normalement, lorsque vous déclarez un membre en tant que Public vous pouvez y accéder à partir d'autres DLL. mais si vous avez besoin de déclarer quelque chose comme public juste à l'intérieur de votre bibliothèque de classe, vous pouvez le déclarer comme Internal .
en définition formelle: les membres internes sont visibles juste à l'intérieur de l'assemblée actuelle ...

12voto

Brian Rasmussen Points 68853

internal est également utile lors de l'écriture de tests unitaires. L'attribut InternalsVisibleTo permet à votre assemblage de test d'accéder aux méthodes internes de votre assemblage de code. C'est-à-dire que vous pouvez tester des méthodes qui semblent privées au monde extérieur sans utiliser de réflexion.

6voto

Tomas Jansson Points 8021

Le public peut également être consulté en dehors de l'assemblée. Ainsi, lorsque vous avez une classe qui ne devrait pas être accessible, toutes les classes de l'assembly devraient pouvoir y accéder, alors interne est la solution. Si vous avez besoin d’un accès extérieur, utilisez public ... changez également votre balise, ce n’est pas le c # 3.0, c’est le .net, ainsi que vb et c #.

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