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
|