I thought C# could pass functions references, much like Delphi, meaning there's much less need for inner classes.

It can. And, being the good .Net programmer that I am, I used events on my Database interface. Problem is, each object needs to respond to events from the database, but I don't want any database code in my domain objects. An anonymous inner class was perfect, but I can't do that in .Net, so I had to create a seperate class.