What IS a closure?
"Anonymous methods are not closures," is the refrain I've heard when I tell people that .NET supports closures.
Ian Griffiths thinks otherwise, and I agree.
If you don't believe me, go read up on it for your self.
A more apropos question would be--what are closures useful for in day-to-day programming?
Here's one guys attempt to answer that question, at least for the Ruby programmer. I've taken his example and turned it into C#. You really have to get to the point where closure are as accessible to you as a for loop or an if statement before you have the epiphany that make the question above seem droll.
delegate void LogDelegate(string message);
void DoSomething()
{
LogDelegate logger;
SerialNumber serialNumber = NextSerialAndLog(out logger);
logger("process 1");
logger("process 2");
logger("process 3");
}
SerialNumber NextSerialAndLog(out LogDelegate l)
{
sn = new SerialNumber();
l = delegate(string message)
{
LogInfo("DoSomething", sn, message);
};
return sn;
}