Problemas con ejemplos de delegados en msdn
1. Los parámetros declarados por MyDelegate no son los parámetros para construir la instancia de delegado, sino la firma del método que se puede pasar al delegado.
1. El entendimiento simple es que la parte de definición de Delegat define una firma, y solo el método que se ajusta a los tipos de entrada y salida de esta definición se puede usar para construir una instancia de delegado.
Por ejemplo, se define el siguiente proxy
delegar cadena SayHello(string name,bool isHappy);
Entonces solo hay dos parámetros de entrada, una cadena y Se pueden utilizar métodos booleanos cuyo parámetro de salida sea una cadena para construir SayHello.
Por ejemplo, hay dos métodos
cadena m1 (nombre de cadena,bool isHappy)
cadena m2 (nombre de cadena)
Ejecute new MyDelegate(m1); OK, ejecutar new MyDelegate(m2) informará un error.
2. El constructor del delegado pasa el puntero del método, por lo que recibe p.InstanceMethod en lugar de p.InstanceMethod(). d() es equivalente a d.Invoke();
Se recomienda utilizar d.Invoke(); en lugar de d();