I'm not convinced by the utility of your example. What's wrong with:
foreach (var obj in objects) {
AddButton("Delete " + obj.ToString(), obj.Delete);
}
This is even simpler and doesn't use closures at all.