È possibile esaminare ogni tipo di variabile per visualizzare il valore o il riferimento effettivo stesso?
Giusto per chiarire, il valore di un variabile di tipo riferimentoè riferimento. Il riferimento è il valore.
Un riferimento è un tipo di valore, proprio come un int è un tipo di valore. A differenza di un int, un riferimento è un valore che può essere solo copiato e dereferenziato; non è possibile osservare il suo valore direttamente in C#, poiché il suo valore è un dettaglio di implementazione del garbage collector.
Il riferimento è memorizzato come una sorta di valore codificato?
Sì, esattamente. In pratica, un riferimento è un numero intero a 32 o 64 bit (a seconda se si è in un processo a 32 o 64 bit) che è un puntatore a una struttura nota al garbage collector come associata ai dati dell'oggetto referenziato .
Se si desidera guardare i riferimenti direttamente, lo strumento per farlo è il debugger. Carica il codice C# nel debugger, compila, eseguilo, fai un punto di interruzione e dai uno sguardo allo stato dello stack e dei registri. Con un po 'di intelligenza dovresti essere in grado di capire quali posizioni e registri di stack corrispondono a quali variabili locali. Le posizioni corrispondenti alle variabili locali di tipo valore conterranno i valori; quelli del tipo di riferimento conterranno valori che sembrano puntatori. Se si esaminano quei puntatori nella finestra della memoria, si guarderanno le strutture gestite dal garbage collector che descrivono il contenuto dell'oggetto.
fonte
2012-01-11 16:53:44
L'unica cosa che si dovrebbe vedere è un indirizzo, un numero apparentemente casuale. Perché vorresti vederlo? – Dykam
Per cementare l'idea che all'interno della variabile non è l'oggetto che impostano, ma piuttosto un indirizzo. Come potremmo accedere a questo? –
http://stackoverflow.com/questions/1978232/how-can-i-display-the-actual-value-of-a-reference-in-c-sharp –