Powel wrote:
Si je comprends bien, le fait de créer un nouveau dictionnaire
avec le même nom supprime les références et les transforme en
nouveaux objets ?
Si c'est le cas, c'est très astucieux. Mais ne serait-il pas plus
simple que RB permettent de ne transmettre que les valeurs sous la
forme d'un clone non lié et non l'objet ?
oups j'ai pas dut etre clair.
pour faire simple le principe du garbage collector est de regarder
si il existe des réfrences a une instance au cour de l'execution.
Si il n'y a plus de référence, l'instance est détruite.
quand tu fais : site = new Dictionnary
cela crée une référence au niveau de la variable site.
quand tu fais par la suite : sites.value(n)=site
cela crée une 2ème réfrence a cette instance dans le dictionary.
A ce moment là il existe 2 références à l'instance de dictionary
Par la suite dans ta boucle while, je refais : site = new Dictionnary
cela détruit donc une des 2 référence a la première instance de
dictionary, et crée une nouvelle instance dont une référence est
dans la variable site.
pour résumer :
1) site = new Dictionnary => instanceA (1 référence)
2) sites.value(n)=site => instanceA (2 références)
3) site = new Dictionnary => instanceA (1 référence), instance B(1
référence)
4) sites.value(n)=site => instanceA (1 référence), instanceB (2
références)
Le garbage collector scrute le compteur de référnece de chaque
instance et quand celle-ci est à 0, supprime l'instance.
J'espère avoir été un peu plus clair.
Ex : sites.value(n)=&site
où &site signifierait que l'on fonctionne en valeur et non en
référence ?
Tu eux adresser une feature request à l'adrese suivante :
http://www.realsoftware.com/feedback
Cordialement,
Olivier Corouge
--
Olivier Corouge
Support Technique en Français
olivier at realsoftware dot fr - http://www.realsoftware.fr