Delegates

Delegates are a reference type to a method. Delegates make it possible to give a method as a parameter to another method. As delegates are only references, they can be changed during runtime to point to another method.

A good realworld example would be filtering functions where one method does the main comparing and returning code and several other delegate method simply define the filtering.

Delegates are also the basis for events.

Tutorials

Delegates Tutorial by Sebastian Lague

Delegates (Official Documentation)