One morning, still drinking my usual strong black coffee I was debugging
some code that seemed fairly routine. But behavior of a code fragment looking simple
somewhat abnormal. Soon I realized that I was dealing with something like this
(after removing all irrelevant code):
var c = new C();
c = null;
After reference to instance of a class was set to null, it seemed it was
still active! And I was pretty sure that there were no tricks with
regeneration on finalization.
Well, may be coffee was not strong enough. Or perhaps something
wrong with my new glasses... I had repeated debugging - with the same result.
took me some time to realize what's going on. Extension methods were added to C#
for quite a time already, but not very wide spread. This is simplified code
allowing the above behavior:
static class CExtension
public static void Foo(this C c)
if (c == null)
Such a simple explanation! I found it funny and happy to share it with you.