2009-01-15 16 views
13

¿Cuál es el equivalente de una palabra clave 'amigo' en C Sharp?¿Cuál es el equivalente de una palabra clave 'amigo' en C Sharp?

¿Cómo utilizo la palabra clave 'interna'?

He leído que la palabra clave 'interna' es un reemplazo para 'amigo' en C#.

Estoy usando una DLL en mi proyecto de C# para el que tengo el código fuente y, sin embargo, no deseo modificar el código existente. Heredé la clase y puedo usar mi clase heredada de la forma que quiera. El problema es que la mayoría del código en la clase padre tiene métodos protegidos. ¿El uso de un amigo de alguna manera hará posible acceder o llamar a estos métodos protegidos?

+5

Aclare esta pregunta, ya que tanto VB como C tienen palabras clave de amistad. No existe un equivalente de la palabra clave C friend en C# –

Respuesta

27
  1. Puede utilizar el modificador de acceso internal palabra clave para declarar un tipo o miembro tipo que puede acceder al código en sólo en el mismo conjunto.

  2. Usted puede utilizar la clase InternalsVisibleToAttribute definido en System.Rutime.CompilerServices para declarar un tipo que puede acceder al código en el mismo conjunto o sólo una ensamblado especificado.

utiliza la primera y cuando se utiliza cualquier otro access modifier como private. A saber:

internal class MyClass { 
    ... 
} 

utiliza el segundo de la siguiente manera:

[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")] 
internal class MyVisibleClass { 
    ... 
} 

Ambos razón se puede considerar el equivalente de friend en C#.

Los métodos que son protected ya están disponibles para las clases derivadas.

5

1) Internal es el C# VB.NET equivelant del 'amigo' de palabras clave, como lo has adivinado (en contraposición a un reemplazo)

2) El uso es de la siguiente manera

internal void Function() {} 
internal Class Classname() {} 
internal int myInt; 
internal int MyProperty { get; set; } 

3) es, básicamente, es un modificador de acceso que establece que la accesibilidad del/la función/vairiable/propiedad de clase marcado como interna es como si fuera pública a la Asamblea que se compila en y privado a cualquier otro asambleas

1

Interna es el equivalente alent de amigo. Un método protegido solo está disponible dentro de la misma clase o de un heredero. Si intenta exponer métodos protegidos de un heredero, puede envolverlos en métodos públicos.

1

Tu subclase podrá acceder a los miembros protegidos de la clase que heredes.

¿Está buscando dar acceso a estos miembros protegidos a otra clase?

24

No, "interno" no es lo mismo que "amigo" (al menos 'amigo' de C++)

amigo especifica que esta clase sólo se puede acceder por una, clase particular.
interno especifica que cualquier clase del ensamblado puede acceder a esta clase.

+0

No es equivalente, pero * es * el mecanismo por el cual un conjunto de clases trabajan juntas sin exponerse al resto del mundo. También fomenta módulos más pequeños y reduce las relaciones de 'spaghetti' entre clases. –

Cuestiones relacionadas