Accedi alla variabile membro privata della classe usando il suo oggetto (istanza)

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

  •  19-08-2019
  •  | 
  •  

Domanda

Ecco uno snippet di codice 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

Pensavo che non potessimo accedere ai membri privati ??usando l'oggetto, ma forse CLR ci consente di farlo. Ciò significa che i modificatori di accesso sono basati sul tipo e non sull'istanza di quel tipo. Ho anche sentito che c ++ lo consente anche ..

Qualcuno indovina quale potrebbe essere la ragione di ciò?

Modifica:

Penso che questa riga dal collegamento msdn fornito da RoBorg spieghi questo comportamento " Il codice nel tipo che dichiara un elemento privato, incluso il codice all'interno di tipi contenuti, può accedere all'elemento "

È stato utile?

Soluzione

La tua domanda è piuttosto confusa, ma penso di averlo capito come: " Perché posso accedere alle variabili private di un'altra istanza (della mia classe)? "

E hai ragione: in tutte le lingue OOP che ho usato puoi accedere a variabili private da altre istanze, proprio perché le autorizzazioni di accesso si basano su dove si trova il codice, piuttosto che su quale istanza dell'oggetto "appartiene".

Altrimenti potrebbe essere difficile implementare costruttori di copie o operatori di uguaglianza.

Altri suggerimenti

Ecco la sezione sui livelli di accesso in MSDN .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top