Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation des destructeurs

2 réponses
Avatar
ThierryL
Bonjour =E0 tous,

Voici mon probl=E8me :

- J'ai un objet A de classe ClasseA.
- J'ai une collection Col qui contient A. (A ne "conna=EEt"=20
pas la collection Col)
- Je d=E9truit A par la commande : A =3D null.

=3D> L'objet A est toujours dans la collection (mais je ne=20
voudrais pas)

Connaissez-vous une mani=E8re =E9l=E9gante de r=E9soudre ce=20
probl=E8me ?

D'avance merci.

Thierry

2 réponses

Avatar
Sylvain Lafontaine
Vous ne détruisez pas un objet A en lui applicant la valeur nulle, vous ne
faites que retirez une des références pointant sur l'objet A. Lorsqu'il n'y
a plus de référence pointant vers un objet; ce dernier est marqué et sera
« collecté » (ou détruit) à un moment ultérieur, lors du prochain passage du
Garbage Collector.

Dans votre cas, vous devez également demander à la collection Col de retirer
sa référence vers cet objet A.

S. L.

"ThierryL" wrote in message
news:1f1e01c4dc7c$be0ff9f0$
Bonjour à tous,

Voici mon problème :

- J'ai un objet A de classe ClasseA.
- J'ai une collection Col qui contient A. (A ne "connaît"
pas la collection Col)
- Je détruit A par la commande : A = null.

=> L'objet A est toujours dans la collection (mais je ne
voudrais pas)

Connaissez-vous une manière élégante de résoudre ce
problème ?

D'avance merci.

Thierry
Avatar
Ambassadeur Kosh
j'apporterais une idée par rapport à la réponse de sylvain.

pourquoi ne pas simplement fourguer à l'objet une liste de choses à faire
par le biais d'un event ?
ainsi, lorsque la liste recoit l'objet lors d'un Add, elle abonne l'objet à
cet evenement qui fera en sorte de le retirer de celle ci lorsque
l'utilisateur invoquera une methode Release.

destruction, ça n'existe pas (on va dire ça comme ça)
je pense que le Dispose n'est pas une bonne idée.
et je me demande si tout ceci n'est pas tout simplement un bad plan...