¿Cuál es la diferencia entre el especificador de acceso protected
y internal protected
en C#?Cuál es la diferencia entre el especificador de acceso protegido y el interno protegido en C#
Respuesta
Internal
se puede ver en el conjunto.
Protected
se puede ver por las clases que heredan de la clase donde se define.
Protected internal
se puede ver en el conjunto O tipos derivados de la clase donde se define (incluidos los tipos de otros conjuntos).
Ver: http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx
Copiado de la página:
public Access is not restricted.
protected Access is limited to the containing class or types derived from the containing class.
internal Access is limited to the current assembly.
protected internal Access is limited to the current assembly or types derived from the containing class.
private Access is limited to the containing type.
Cuál es el punto de interna protegida? ¿No estaría protegido por sí mismo haciendo exactamente lo mismo? –
@Vince, No, si es 'protegida internal' y que se derivan de la clase en otro montaje, que no tendría acceso al método etc, pero si sólo era' protected' lo haría. –
Si no tengo acceso al método en el otro ensamblaje, entonces simplemente podría marcarlo interno en lugar de protegido interno. ¿Me estoy perdiendo de algo? :) –
internal protected
le permite acceder a los miembros dentro del mismo conjunto de clases que no se derivan de un mismo objeto, sino que también permite el estándar protegida acceso que obtienes para acceder a los miembros de otra asamblea. Es interno | protegido, no interna & protegido (aunque el CLR permite que el último, C# no lo hace)
http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx. –
Uh, ¿qué estoy buscando? –
Desde mi entender, protegida interna no tiene sentido, interna protegida es el mismo que el protegido y le permite hacer exactamente lo mismo –
internal protected
o protected internal
que es el mismo medio externamente protected
(desde fuera del conjunto actual) e internamente public
(desde dentro del mismo conjunto).
protected
significa que solo la clase actual y las clases que se derivan de ella tienen acceso al miembro.
internal
significa que cualquier clase dentro del ensamblaje actual tiene acceso al miembro.
protected internal
significa esencialmente protected
ointernal
; es decir, todas las clases que se derivan de la clase actual (en cualquier conjunto) tienen acceso al miembro, como lo hacen todas las clases en el conjunto actual. Esto está en contraste con lo que muchos desarrolladores esperan - que protected internal
significaría lo mismo que protected
yinternal
(no es así).
internal
- Visible por cualquier cosa dentro del mismo conjunto (.dll o .exe).protected
- Visible por cualquier subclase, sin importar dónde se encuentre.internal protected
- visible por cualquier cosa dentro del mismo conjunto y cualquier sub-clases, sin importar dónde se encuentren.
La forma en que Jeff Mattfield dice "interna reduce aún más esa visibilidad" no deja claro. internal
y protected
son simplemente visibilidades diferentes. Tener ambos juntos hace que el miembro más sea visible. La visibilidad predeterminada de algo sin modificadores de acceso explícitos es lo más pequeña posible. Agregar cualquier modificador de acceso siempre aumenta la visibilidad.
Protegido interno y protegido especificador de acceso se refieren al concepto de herencia.
Tomemos el ejemplo para explicar protegido y protegido interno.
Hay dos espacios de nombres llamados namespace A y namespace B.
En espacio de nombres A, hay una clase llamada classA que consiste en un método denominado aceptar() usando protegido especificador de acceso.
En espacio de nombres B, hay otra clase, llamada ClassB, que hereda de classA del espacio de nombres Un.
Ahora, con la ayuda de este protegida especificador podemos acceder a esa aceptar() método en el ClassB de espacio de nombres B.
Pero este concepto no es cierto cuando se utiliza el especificador acceso interno protegida: si aceptar() función de classA de espacio de nombres Una estaba usando protegida especificador interna acceso, a continuación, ClassBdel espacio de nombres B no puede acceder a él a causa de que aceptar() función sólo se puede acceder dentro de la clase heredada dentro del mismo espacio de nombres.
Para entender mejor la diferencia entre protegido y protegido Internal.it es mejor saber primero qué es la diferencia entre Protegida e interna.
Variable interna se refieren a assembly.Yo misma no puede acceder en montaje diferente. variable protegida como variable privada, pero puede acceder en la clase manejada en el mismo ensamblaje o diferente.
namespace InternalTest ----This namespace in assembly One
{
Public class A
{
B ol=new B();
Console.WriteLine(ol.x);//Output:5
Console.WriteLine(ol.y);//error will occured. Because protected is like Private variable
}
public class B
{
Internal int x=5;
Protected int y=5;
}
}
2) Tomar el montaje diferente.
using InternalTest;
namespace InternalTest1 ----This namespace in assembly Two
{
Public class A1:B
{
Public void GetInternalValue()
{ return x; //error can't access because this is internal
}
Public void GetProtectedValue()
{
return y;//Work because it's protected
}
}
public class C
{
}
}
del ejemplo anterior se borra se puede acceder interna mismo conjunto, pero no en diferentes assembly.You puede decir en mismo conjunto que le gusta mirar variable.you pública puede asignar un valor al crear objeto de la clase
3) interno protegido tiene bondad de ambos en el mismo conjunto que parece variable pública. en el montaje diifrent utiliza como variable de protección
PROTEGIDA
Si la clase se declara como "protegido" significa que se puede acceder por la clase hija dentro del conjunto, así como la clase del niño desde fuera del ensamblaje .
INTERNO
Si la clase se declara como "interno" significa que se puede acceder por cualquier clase dentro del conjunto.
interna protegida
Si la clase se declara como "protegido interno" significa que se puede acceder dentro del conjunto por sólo su clase derivada.
- 1. ¿Cuál es la diferencia entre "protegido" e "interno protegido"?
- 2. ¿Cuál es la diferencia entre "privado" e "interno protegido"?
- 3. Confusión: interno, protegido y protegido interna
- 4. C# acceso protegido campo
- 5. ¿Cuándo utilizarías el modificador de acceso "protegido interno"?
- 6. Mostrar "interno protegido" en UML?
- 7. ¿Cuál es la diferencia entre abstracto y protegido en mi escenario? C#
- 8. Significado de Medio interno protegido en .NET
- 9. ¿Qué elige, protegido o interno?
- 10. Diferencia entre especificador de acceso y modificador de acceso
- 11. Acceso al teclado en modo protegido en el ensamblaje x86
- 12. Java: acceso protegido en los paquetes
- 13. Caso en el interruptor protegido
- 14. Uso de un tipo interno utilizado como campo protegido
- 15. ¿Por qué el acceso de reflejo es miembro protegido/privado de clase en C#?
- 16. ¿Cuál es la razón detrás de Object.clone() está protegido
- 17. ¿Qué significa el modificador protegido?
- 18. getter interno C#, setter protegido con un parámetro de clase interno
- 19. Propiedad o campo protegido C#
- 20. ¿Cuál es la diferencia entre el casting y la conversión?
- 21. Django: [correo electrónico protegido] en el administrador
- 22. Honestamente, ¿cuál es la diferencia entre la variable pública y el acceso público a la propiedad?
- 23. ¿Cuál es el motivo de la diferencia entre -> y. en c/C++?
- 24. ¿Cuál es la diferencia entre el mango y el hilo?
- 25. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 26. Método protegido en Python
- 27. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 28. ¿Cuál es la diferencia entre "~> 4.0.1", "4.0.1" y ningún especificador de versión en un Gemfile?
- 29. ¿Puede haber protegido clases anidadas en C++?
- 30. ¿cuál es la diferencia entre el objetivo y el proyecto?
posible duplicado de [Lo que significa interna protegida en .Net] (http://stackoverflow.com/questions/2651137/what-does-protected-internal-means-in-net) y [¿Cuál es la diferencia entre 'protegido' y 'protegida interna'?] (http://stackoverflow.com/questions/585859/what-is-the-difference-between-protected-and-protected-internal) –