2009-10-29 6 views
0

Faire cela dans un programme de console:Inspection & x dans débogueur (C#)

object x = new string(new char[0]); 

Si l'on a établi un rigt point d'arrêt après l'affectation de x et faire apparaître la fenêtre de la montre rapide, ce qui est le débogueur d'affichage pour & x? J'attendais l'adresse de x mais on dirait que je me trompe?


EDIT: Je demande cela à cause de another thread, qui pointait que si l'on

faire
object x = new string(new char[0]); 
object y = new string(new char[0]); 

x et y fera référence le même objet. Comme je voulais le vérifier, j'ai essayé d'inspecter les adresses de ces variables dans le débogueur en utilisant l'opérateur & et, au début, j'ai eu l'impression qu'ils étaient différents. Mais, après l'extension du résultat, les valeurs du second niveau correspondent - donc il semble que ce soit des "vraies adresses".

+0

Quel débogueur? Visual Studio? – user200783

+0

Oui, Visual Studio. –

+0

OK, j'ai ajouté l'étiquette visual-studio. – user200783

Répondre

2

Si j'affiche x je reçois "" avec le type signalé comme "object {string}" - ce qui est ce que j'attends.

&x affiche 0x062fd7f0 (dans mon cas) avec le type signalé comme "objet & *". Expansion qui donne un autre pointeur et le type "objet &".

Dans le premier cas, le débogueur dispose de suffisamment d'informations pour déterminer le type et vous montrer quelque chose d'utile. Dans le second cas tout le débogueur "sait" est que la variable est un objet donc ne peut afficher que des pointeurs (je pense).

MISE À JOUR

Votre mise à jour est logique. La valeur signalée par &x et &y sont les pointeurs vers les variables. La valeur qu'ils contiennent est le pointeur vers la chaîne immuable "".

+0

Donc, l'adresse réelle semble être l'expansion (objet &)? –

+0

En effet, l'inspection de & x donne un pointeur sur l'adresse. * & x donne la valeur de l'adresse. –

0

Vous ne pouvez pas faire cela, car la gestion de la mémoire est gérée par CLR

+0

Oui, édité ma question pour clarifier (j'espère) ce que j'essayais de faire. –

Questions connexes