Designing .NET Class Libraries is very good place that I am used to go here and study something anout .NET Framework. I also like Brad Abrams very much, because hi usually use very simple example to explain such hard thing like "dispose", "finalizer", "Manage code", "CLR" ... . In the speechDesigning for a Managed Memory World, Brad Abrams focus on "Gabage Colloection", and talking about finalizer (seems he like this word more than destructor) , dispose( I think dispose is new concept in .NET framework, but it really hard to use it well).
He also talk about try {} ,excption{} and finally {} to manage the memory well. Nested use try{} finally {} can make exception more clear and can handle more condition even we don't think it will happen.
static void CopyFile(file sourcdeFile, file destFile){
try {
OpensourceFile(sourcdeFile);
try { OpensourceFile(destFile); }
finally { CloseFile(destFile); }
}
finally { CloseFile(sourcdeFile); }
}
Important concept about GC (Gabage Collection) is when dispose, close, finalize call? The anwser is use code to call dispose and close; but GC will call finalize when this object should be collection back.