en principio:
1. La esencia de una delegación es un puntero, un puntero de función. Simplemente obtenga la primera dirección de la función;
La delegación de C# agrega seguridad, que se refleja en la detección de tipo del bloque de instrucciones de función al que hace referencia el puntero de función, como el valor de retorno, el tipo de parámetro y el número de parámetros.
Cuando a un puntero de función en C se le asigna un valor (en C#, es cuando se crea una instancia del delegado, porque el backend de C# maneja al delegado como una clase y lo encapsula) si el valor asignado satisface las diversas condiciones del tipo (Valor de retorno , tipo de parámetro, número de parámetros) no están marcados, y la garantía la da el usuario, y C# lo compilará y lo solicitará.
2. El proceso de creación de instancias delegado, es decir, el proceso de construcción del objeto delegado, consiste en asignar la dirección de memoria de un bloque de instrucciones de código de función existente (función estática, función miembro no estática de la instancia) al delegado. El proceso de asignación es lo que hace el constructor delegado. Por lo tanto, el constructor delegado debe tener un parámetro. Este parámetro es procesado por el sistema en segundo plano, que es el puntero de función que satisface la verificación de tipo y el tipo a verificar (valor de retorno). , tipo de parámetro, número de parámetros) se proporcionan al declarar y definir el delegado.
3. Dos métodos de creación de instancias de delegados:
1) A a = new A (nombre del método estático/instancia. nombre del método);
2) A a = nombre del método estático/instancia.nombre del método;
Dos métodos llamados por los delegados:
1) a.Invocar()
2)a()
El método utilizado para construir un delegado puede ser un método estático o una función miembro de un objeto instanciado. La esencia es que esta instrucción de código se ha compilado, se ha asignado memoria y se han pasado los parámetros al delegado (esencialmente, el encabezado de). estos datos de instrucción) Dirección) son válidos y significativos. Desde esta perspectiva, los métodos estáticos naturales y los métodos de instancia se pueden usar para construir y crear instancias delegadas.