Sono un po 'perplesso sul motivo per cui questo non genera un'eccezione - credo che il CLR non cancelli l'oggetto perché c'è un riferimento ad esso?
static void Main(string[] args)
{
List<A> listOfA = new List<A>();
A a = new A();
listOfA.Add(a);
((IDisposable)a).Dispose();
listOfA[0].Check(); //here I would expect and exception as the reference should point to an object that does not exist
}
}
public class A : IDisposable
{
public A()
{
}
public void Check()
{
}
void IDisposable.Dispose()
{
}
}
}
Nel mio attuale progetto, un oggetto può essere referenziato in molti posti ma dovrei assicurarmi che quando lo caccio esplicitamente, quei riferimenti genereranno un'eccezione. Non ho idea di come farlo, però.