C # internos VS VBNET amigo
-
04-10-2019 - |
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:
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. [...]
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.
-
¿Estoy haciendo algo mal o cualquier cosa, desde esta perspectiva?
-
¿Cuáles son los refinamientos que no entiendo?
-
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!
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 .