¿Es posible inspeccionar cada tipo de variable para ver el valor o la referencia real en sí?
Solo para aclarar, el valor de una variable de tipo de referenciaes una referencia. La referencia es el valor.
Una referencia es un tipo de valor, al igual que un int es un tipo de valor. A diferencia de un int, una referencia es un valor que solo puede ser copiado y desreferenciado; no puede observar su valor directamente en C#, porque su valor es un detalle de implementación del recolector de basura.
¿La referencia está almacenada como algún tipo de valor codificado?
Sí, exactamente. En la práctica, una referencia es un entero de 32 o 64 bits (dependiendo de si se encuentra en un proceso de 32 o 64 bits) que es un puntero a alguna estructura conocida por el recolector de basura como asociada a los datos del objeto referido .
Si desea ver las referencias directamente, la herramienta para hacerlo es el depurador. Cargue su código C# en el depurador, compílelo, ejecútelo, acceda a un punto de interrupción y observe el estado de la pila y los registros. Con un poco de inteligencia, debería ser capaz de averiguar qué ubicaciones de pila y registros corresponden a qué variables locales. Las ubicaciones correspondientes a las variables locales del tipo de valor contendrán los valores; los de tipo de referencia contendrán valores que parecen punteros. Si examina esos punteros en la ventana de memoria, entonces observará las estructuras mantenidas por el recolector de basura que describen el contenido del objeto.
Lo único que vería es una dirección, un número aparentemente aleatorio. ¿Por qué querrías ver esto? – Dykam
Para cimentar la idea de que dentro de la variable no es el objeto que establecen, sino una dirección. ¿Cómo accederíamos a esto? –
http://stackoverflow.com/questions/1978232/how-can-i-display-the-actual-value-of-a-reference-in-c-sharp –