Red de conocimiento informático - Conocimiento informático - ¿Cuál es la diferencia entre un delegado y un puntero de función?

¿Cuál es la diferencia entre un delegado y un puntero de función?

Diferencias:

1. Un delegado define una nueva clase que representa un conjunto de métodos con parámetros y tipos de retorno específicos. Después de declarar un tipo de delegado, se debe crear (crear una instancia) un objeto delegado y asociarlo con un método específico. Para los métodos estáticos, el objeto delegado encapsula directamente el método que se llamará. Para los métodos de instancia, primero debe crear una instancia de la clase y luego encapsular un método en esa instancia.

2. Un delegado es aproximadamente equivalente a un puntero de función en C++. Pero a diferencia de los punteros de función, los delegados están orientados a objetos y son seguros para escribir.

3. Siempre que la firma del método sea coherente con la definición original del delegado, un delegado puede corresponder a varios objetos delegados. La llamada al objeto delegado es la misma que la llamada al método original.

4. Siempre que los tipos de parámetros y tipos de retorno del método coincidan con los del objeto delegado, el objeto delegado no conocerá ni se preocupará por los detalles (nombre o funciones implementadas).