4 votes

Signification du spécificateur d'accès interne protégé dans le code ci-dessous

Ok, laissez-moi commencer par un exemple, il s'agit de ma classe de base dans un autre assemblage.

namespace BL
{
    public class BasicClass
    {
        protected internal void func()
        {
            //Code Logic
        }
    }
}

Voici maintenant ma classe dérivée dans une autre assemblée

namespace DL
{
    public class DerivedClass:BasicClass
    {
        private void hello()
        {
            func();
        }
    }
}

Je suis capable d'appeler le func() de la classe de base, ce qui montre que la protected mais qu'en est-il de la propriété modificatrice d'accès internal La propriété du modificateur d'accès : doit-il être autorisé à accéder à l'information ? func() dans un autre assemblage puisqu'il est déclaré interne. Si c'est le cas, alors pourquoi l'appeler protected internal et pas simple protected

5voto

Ruirize Points 863

Vous pourriez vouloir donner este une lecture.

Le niveau d'accessibilité interne protégé signifie protégé OU interne, et non protégé ET interne. En d'autres termes, il est possible d'accéder à un membre interne protégé à partir de n'importe quelle classe du même assemblage, y compris les classes dérivées. Pour limiter l'accessibilité aux seules classes dérivées du même assemblage, déclarez la classe elle-même interne, et déclarez ses membres comme protégés.

3voto

J0HN Points 10486

Internal signifie que le membre de la classe est disponible pour toutes les classes de la même assemblée, mais qu'il n'est disponible pour aucune classe en dehors de l'assemblée. Protected internal signifie que le membre ,est accessible à n'importe quelle classe du même assemblage et à n'importe quelle sous-classe dans toute autre assemblée.

Sujet MSDN sur les modificateurs d'accès pour référence :

interne protégé

Le type ou le membre est accessible par tout code de l'assemblage dans lequel il est déclaré, ou à partir d'une classe dérivée dans un autre assemblage. L'accès à partir d'une autre assemblée doit avoir lieu dans une déclaration de classe qui dérive de la classe dans laquelle l'élément interne protégé est déclaré, et il doit avoir lieu par le biais d'une instance du type de la classe dérivée.

0voto

Șhȇkhaṝ Points 9242

En MSDN (cliquez pour plus d'informations) :

protégé :

Le type ou le membre n'est accessible qu'au code de la même classe ou structure, ou d'une classe dérivée.

interne :

Le type ou le membre est accessible par tout code de la même assemblée, mais pas depuis une autre assemblée.

interne protégé :

Le type ou le membre est accessible par tout code de la même assemblée, ou par toute classe dérivée d'une autre assemblée.

0voto

bob the builder Points 88

"Quelle est l'utilité d'une chose comme l'interne protégé lorsque le "interne" dans interne protégé n'a aucune signification" :

Dans l'Assemblée BL, classe X, vous pouvez utiliser directement new BasicClass().func(), car vous avez activé le drapeau "interne". Si ce drapeau n'était pas activé, la classe X devrait dériver de BasicClass afin d'accéder à func().

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