Acceda a la variable miembro privado de la clase utilizando su objeto (instancia)

StackOverflow https://stackoverflow.com/questions/346127

  •  19-08-2019
  •  | 
  •  

Pregunta

Aquí hay un fragmento de código VB.NET

Public Class OOPDemo

    Private _strtString as String

    Public Function Func(obj as OOPDemo) as boolean
      obj._strString = "I can set value to private member using a object"

    End Function

End Class

Pensé que no podíamos acceder a los miembros privados usando el objeto, pero quizás CLR nos permite hacerlo. Eso significa que los modificadores de acceso se basan en el tipo y no en la instancia de ese tipo. También he oído que c ++ también permite eso ...

¿Alguna idea de cuál podría ser la razón de esto?

Editar:

Creo que esta línea del enlace msdn dada por RoBorg explica este comportamiento " El código del tipo que declara un elemento privado, incluido el código dentro de los tipos contenidos, puede acceder al elemento "

¿Fue útil?

Solución

Tu pregunta es bastante confusa pero creo que la he entendido como: " ¿Por qué puedo acceder a las variables privadas de otra instancia (de mi clase)? "

Y tiene razón: en todos los lenguajes OOP que he usado, puede acceder a variables privadas desde otras instancias, precisamente porque los permisos de acceso se basan en dónde está el código, en lugar de a qué instancia de objeto 'pertenece'.

De lo contrario, podría ser difícil implementar constructores de copia u operadores de igualdad.

Otros consejos

Aquí está la sección sobre niveles de acceso en MSDN .

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