[C#] GC gedrag bij null'en van members

Pagina: 1
Acties:

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 19:35
stel:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A
{
   private B _B;

   public A()
   {
      _B = new B();
      _B.DoeWat += new EventHandler(this.HandelDoeWatAf);
      _B = null;
   }

   private HandelDoeWatAf(object sender, EventArgs e)
   {
   }
}

class B
{
   public event EventHandler DoeWat;
}


Wordt _B nu door de GC gecollect (het moment waarop daargelaten) ?

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

nee.

een delegate wordt tijdens compilatie omgezet naar een klasse. die klasse heeft dus nog een referentie naar _B

edit:
toch wel, ik was even te snel.

de klasse _B heeft via de delegate een reference naar A en niet omgekeerd.

[ Voor 36% gewijzigd door H!GHGuY op 24-03-2006 22:04 ]

ASSUME makes an ASS out of U and ME


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Idd volgens de specificatie zou de GC _B mogen collecten. Wat er precies gebeurt hangt natuurlijk af van de implementatie van het framework. Maar ik denk dat je er wel redelijk zeker van kan zijn dat hij ge collect wordt ( en natuurlijk weet je idd niet wanneer dat precies gebeurt )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”