Pregunta

A esta pregunta SO: ¿Cuál es el equivalente C # del amigo , yo personalmente he respondido "interno", al igual que lo hizo Ja entre las respuestas! Sin embargo, Jon Skeet dice que no hay equivalencia directa de VB amigo en C #. Si Jon Skeet lo dice, no voy a ser el que dice lo contrario! ; P

Me pregunto ¿cómo puede la palabra clave interna (C # ) no ser el equivalente de amigo (VBNET) cuando sus respectivas definiciones son:

amigo VBNET

El amigo (Visual Basic) palabra clave en el establecimiento de declaraciones especifica que los elementos se pueden accederse desde dentro del mismo conjunto, pero no desde el exterior del conjunto. [...]

C # interno

interna :. El acceso está limitado a la actual asamblea

A mi entender, estas definiciones significan exactamente lo mismo para mí.

A continuación, respectivamente, cuando estoy de codificación en VB.NET, yo uso el amigo palabra clave para especificar que una clase o una propiedad deberán ser accesibles sólo dentro de la asamblea en la que se declara. Lo mismo en C #, yo uso el interno palabra clave para especificar el mismo.

  1. ¿Estoy haciendo algo mal o cualquier cosa, desde esta perspectiva?

  2. ¿Cuáles son los refinamientos que no entiendo?

  3. Poder alguien por favor explicar cómo o en qué amigo e interna no son equivalencias directas?

Gracias de antemano por alguna de sus respuestas!

¿Fue útil?

Solución

he dicho que no hay equivalente directo de la C ++ concepto de "amigo". Ese no es el mismo que el concepto VB.NET Friend, que es de hecho equivalente a internal en C #.

El contexto es importante - no asuma que la misma palabra significa exactamente lo mismo en todos los idiomas ... "estática" es un ejemplo clásico:)

Otros consejos

(original) la respuesta de Jon deja claro que se está refiriendo a la C / C ++ friend palabra clave, que permite el acceso privado a otra clase. No hay equivalente directo en C #, pero hay una manera de extender internal a otro montaje, en gran medida para la prueba.

Por lo que yo entiendo, VB.Net Friend es lo mismo que C # internal.

(I escribió lo anterior al igual que Jon agregó una respuesta aquí.)

Al comparar los lenguajes .NET, friend de VB equivale a internal C # 's. Es decir, cualquier cosa marcada como tal, sólo se puede acceder desde dentro del mismo proyecto / montaje. Se puede combinar con protected para un mayor control sobre la visibilidad.

El atributo InternalsVisibleTo puede ser útil para propósitos de prueba; A pesar del nombre, se aplica a VB tanto como lo hace en C #. Cabe señalar que la VB no admite el uso de InternalsVisibleTo hasta 4 .NET.

Hay un equivalente aproximado de la C ++ amigo palabra clave en código administrado. A pesar de que trabaja en el nivel de ensamblado, no el nivel de clase. Se puede utilizar el [InternalsVisibleTo] atributo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top