Delegates allow to pass in a method as parameter to another method.

To some extent creating an interface with a callback method can provide partial implementation of this functionality, but this doesn't allow to specify multiple different methods as code to be executed on callback.


In addition, anonymous methods and lambda expressions provide an extension to this principle: