The same function name, different signatures, calling different functions.
For example, in the method of MessageBox. Show (), the parameters can be (string text), (string text, string title), (string text, string title, enumeration button) and so on. Although the method name is the same Show (), its signature is unreasonable, so the result is different.
The so-called delegate is a special type, and one method can be passed as a parameter of another method. I have already answered this question in/question/98238748699734619.html, which is more detailed, and the subject can poke it in.
The main body here has a function signature, void AsyncSndMsg(string) (function name AsyncSndMsg, parameter number 1, parameter type string, return value type void), and another delegate SendMessageDelegate. If AsyncSndMsg is to be passed to another method as a delegate type, the number of parameters, parameter types and return value types of SendMessageDelegate must be the same as AsyncSndMsg, that is, the signature is the same.