Voir l'exemple de code de MSDN: (http://msdn.microsoft.com/en-us/library/b1yfkh5e(v=VS.100).aspx)Finaliseurs avec Dispose() en C#
// Design pattern for a base class.
public class Base: IDisposable
{
private bool disposed = false;
//Implement IDisposable.
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Free other state (managed objects).
}
// Free your own state (unmanaged objects).
// Set large fields to null.
disposed = true;
}
}
// Use C# destructor syntax for finalization code.
~Base()
{
// Simply call Dispose(false).
Dispose (false);
}
}
Dans le GC.SupressFinalize() la mise en œuvre appelle Dispose() ;, mais fournissent un destructor pour finaliser l'objet .
À quoi sert de fournir une implémentation pour le destructeur lorsque GC.SuppressFinalize() est appelé?
Juste un peu confus quelles sont les intentions?
Merci pour ça. Faire sens lorsque l'objet est utilisé sans "utiliser" le contexte ailleurs dans le système. – msuhash