Prendo spunto dai post di Lorenzo e di Raffo per segnalarvi un bell'articolo di MSDN Magazine di Gennaio di James Kovacs a proposito dei memory leak che possono verificarsi nelle nostre applicazioni .NET se scritte "male", anche nel caso di solo codice managed.
Credo che ogni sviluppatore di buon livello debba annoverare, nel suo bagaglio culturale, la conoscenza di come funzionano le cose a basso livello, perché in alcuni casi bisogna implementare IDisposable (tempo fa ho scritto qualcosa in proposito qui), cosa sono boxing e unboxing, cosa succede quando scriviamo
myButton.Click += new EventHandler(myButtonClickHandler);
o qual è l'overhead di lavoro a cui costringiamo il CLR nel caso in cui chiamiamo un metodo marcato come virtual.
Quindi... comprate tutti CLR via C# di Jeffrey Richter, da bravi!