Campo privado capturado en delegado anónimo
class A
{
public event EventHandler AEvent;
}
class B
{
private A _foo;
private int _bar;
public void AttachToAEvent()
{
_foo.AEvent += delegate()
{
...
UseBar(_bar);
...
}
}
}
Ya quedelegate
captura variablethis._bar
, ¿se aplica implícitamente a la instancia deB
? Será instancia deB
será referenciado a través del controlador de eventos y la variable capturada por una instancia deA
?
¿Sería diferente si_bar
era una variable local deAttachToAEvent
método?
Desde mi caso, una instancia deA
vive mucho más y es mucho más pequeño que una instancia deB
, Me preocupa causar una "pérdida de memoria" al hacer esto.