You can define this requirement with interfaces, as well. Delegates are smaller and of finer granularity than interfaces. The
Pairclass doesn’t need to implement an entire interface, it just needs to define the signature and return type of the method it wants to invoke. That is what delegates are for: they define the return type and signature of methods that can be invoked through the interface.