I\'ve run ildasm to find that this:
using(Simple simp = new Simple())
{
Console.WriteLine(\"here\");
}
generates IL cod
No, the finally block will ALWAYS be executed. You may not be getting the object from a new but from some other function that returns your object - and it might return NULL. using() is your friend!
dss539 was kind enough to suggest I include his note:
using(Simple simp = null)
is yet another reason that the expansion must check for null first.