2010-04-16 17 views
31

Medios protegidos, podemos acceder a este miembro solo en una clase derivada, e interna significa que podemos acceder a este miembro en cualquier tipo en el mismo ensamblado utilizando un objeto. Entonces, ¿puedo considerar un miembro interno protegido como miembro público en el mismo ensamblaje? y como miembro protegido en el ensamblaje diferente.Significado de Medio interno protegido en .NET

EDIT:

namespace pracConsole 
    { 
class Class1 
{ 
    protected internal int val; 
    public int hello() 
    { 
     Console.WriteLine("This is method pracConsole.hello"); 
     Console.ReadLine(); 
     return 1; 

    } 
} 
class program 
{ 
    static void Main(string[] args) 
    { 
     Class1 _class1 = new Class1(); 
     _class1.val = 3; 
     _class1.hello(); 
     Console.ReadLine(); 
    } 
} 

}

ver que soy capaz de acceso, interna protegida en una clase derivada no ... por lo que su trabajo como del público en assembly..what mismo que hacer decir.

+1

+1 Buena pregunta. También me encontré con este problema y pensé que significaría protegido ** Y ** interno, pero no es así, como lo señala Jason a continuación. – gehho

Respuesta

48

Es confuso.

protected significa "solo esta clase y clases derivadas".

interior significa "solo las clases en este conjunto".

protegidas medios internos "protegido o interna" (cualquier clase en un mismo conjunto, o cualquier clase derivada - incluso si es en un conjunto diferente).

es decir, no significa "protegido AND interno" (solo las clases derivadas dentro del mismo conjunto).

+0

, por lo que dice que es público en el mismo ensamblaje y está protegido en el ensamblaje diferente –

+0

@Jason Consulte ediciones. –

+0

Sí, eso es correcto. –

1

Protegido interno significa que solo los tipos y tipos derivados en el mismo ensamblaje pueden acceder al miembro. Es extraño, pero es una relación sindical. Es decir, se puede acceder al miembro mediante cualquier elemento que pueda acceder a los miembros marcados como O interno o protegido.

+0

Así que piense: si puedo acceder a una red interna protegida a través de un objeto en el mismo conjunto, entonces no funciona como Público. –

-4

No realmente. La palabra clave Protected en la declaración de declaración especifica que solo se puede acceder a los elementos desde dentro de la misma clase, o desde una clase derivada de esta clase. Entonces puedes acceder desde la misma biblioteca pero no desde todas las clases.

Y no puede acceder a Protected Internal desde cualquier otra biblioteca porque Internal significa acceso solo desde el mismo ensamblaje.

+0

Respuesta incorrecta. Sin embargo, la pregunta ha sido respondida correctamente por otros carteles: interna en su asamblea, protegida fuera de ella. Y no es "biblioteca" en .NET, sino "ensamblado". – Gorpik

2

interna significa que sólo las clases dentro del mismo conjunto pueden acceder a ese miembro

protegido significa el miembro sólo se puede acceder por un tipo que se derivan (clase niño el acceso a un super clase).

Protegido interno es una combinación de ambos. Solo se puede acceder al mismo ensamblado y solo se puede acceder a él como clase secundaria.

Más simplemente: 'protected internal' significa 'protegido o interno' - esto significa que se puede acceder dentro del mismo conjunto o por un tipo derivado.

+0

Entiendo estas cosas, pero quiero saber, ¿puedo decir con seguridad que es público en el mismo ensamblaje y protegido en el ensamblaje diferente –

+0

Se contradice a sí mismo: "Solo se puede acceder dentro del mismo ensamblaje * y * solo puede ser accedido como una clase infantil ". frente a "esto significa que se puede acceder dentro del mismo conjunto * o * por un tipo derivado". Al menos esa es mi comprensión de tu publicación. Tal vez deberías eliminar la segunda oración en el tercer párrafo comenzando "Solo se puede acceder ...". – gehho

Cuestiones relacionadas