C# declara un delegado con la misma firma que el método que se llamará
Firma. Una función consta de varias partes: nombre de la función (de hecho, estrictamente hablando, no se llama nombre de función en C#, se llama así en C++, debería llamarse nombre de método, porque C# no tiene Función, solo Método ), número de parámetros, tipo de parámetro, tipo de valor de retorno, estas cuatro partes juntas forman una firma de función.
El mismo nombre de función tiene firmas diferentes y las funciones llamadas son diferentes.
Por ejemplo, en el método MessageBox.Show(), los parámetros pasados pueden ser (texto de cadena), (texto de cadena, título de cadena) o (texto de cadena, título de cadena, botones de enumeración), etc. . esperar. Aunque el nombre del método es el mismo Show(), su firma es diferente, por lo que los resultados son diferentes.
El llamado delegado es un tipo especial que puede pasar un método como parámetro de otro método. He respondido esta pregunta en /question/982387486699734619.html con más detalle. Puedes consultarlo.
El asunto aquí tiene una firma de función, void AsyncSndMsg(string) (nombre de función AsyncSndMsg, número de parámetros 1, tipo de parámetro cadena, tipo de valor de retorno void), y también hay un delegado SendMessageDelegate, si Si desea pasar AsyncSndMsg como tipo de delegado a otro método, al declarar SendMessageDelegate, su número de parámetro, tipo de parámetro y tipo de valor de retorno deben ser los mismos que AsyncSndMsg, es decir, la firma es la misma.