Delegate is kinda like a pointer to a function in C++ or like an event handler in Java You can use it to “multicast” which means running multiple functions in different instances of object already created. This is useful when you want your objects to “register” to an event raised by another object. The way it works is the object you are registered to listen to receives the delegate of the function it is supposed to run in your object, the delegate is then run from it. (if you switch the word delegate for pointer, this would be much simpler)