A function consists of several parts, such as function name, parameter number, parameter type and return value. Function signature consists of parameter number and its type. When the function is overloaded, use the different signatures of the function (that is, the number and type of parameters are different) to distinguish which method the caller calls!
The function signature consists of the function name and the type and category (value, reference or output) of each parameter (from left to right).
Delegate can be understood as a function with a function as a parameter. Then the delegate must have the same parameter list (including the same parameter order) as the function.