Respuesta

13

Los punteros de función le permiten pasar funciones como variables. El puntero de función es básicamente un método heredado para pasar la función en idiomas que no admiten métodos de primera clase, como C/C++.

Métodos de primera clase Básicamente significa que puede pasar funciones como variables. Métodos (sin sentido) significan funciones. Esto básicamente significa funciones de primera clase. En términos simples, significa que las funciones se tratan como "ciudadanos de primera clase", como variables. En los viejos tiempos (C/C++), porque no podemos pasar directamente una función, y tuvimos que recurrir a soluciones como punteros a funciones, dijimos que las funciones no eran ciudadanos de primera clase.

Delegates es la respuesta de C# a los métodos de primera clase. Los delegados son algo más potente, ya que implica el cierre de , considere el siguiente fragmento de código:

void foo(int a) 
{ 
    void bar() { writefln(a); } 
    call(&bar); 
} 

void call(void delegate() dg ) { dg(); } 
int main(char[][] args) { 
    foo(100); 
} 

en cuenta que bar puede hacer referencia a la variable local a porque los delegados pueden utilizar cierres.

Los cierres pueden ser muy confusos al principio. Pero la definición del hombre perezoso puede ser realmente simple. Básicamente significa que una variable puede estar disponible de la manera esperada por los humanos. En otras palabras, se puede hacer referencia a una variable en lugares donde parece que estaría presente, leyendo la estructura del código fuente. Por ejemplo, mirando el fragmento de código de arriba.Si no tuviéramos cierre, bar no podría hacer referencia a a porque a era solo local en foo, pero no bar, que es otra función.

El Proxy dinámico es el impar. No pertenece a estos artículos. Explicarlo requiere un texto muy largo. Se deriva de la famosa Proxy Pattern. El problema con el Patrón Proxy fue que la clase Proxy necesita implementar la misma interfaz que el Sujeto. Dynamic Proxy básicamente significa usar un enfoque reflexivo para descubrir el método del Sujeto, de modo que el ProxyPattern pueda liberarse de estar vinculado a la interfaz del Sujeto.

0

sólo los que sé sobre: ​​

  • punteros de función: sólo eso, un puntero a una pieza de código. saltas a él, se ejecuta. los lenguajes escritos pueden hacer cumplir alguna convención de paso de parámetros (es decir, declaraciones de C)
  • Cierres: una función con un par de estados. más naturalmente escrito en idiomas de ámbito léxico (es decir, Scheme, JavaScript, Lua). varios cierres pueden compartir el mismo estado (o parte de él), por lo que es una forma fácil de implementar OOP.
  • Métodos de primera clase: un cierre creado a partir de una instancia de objeto y un método. algunos lenguajes con cierres y un OOP nativo (Python, JavaScript) pueden crear cierres automáticamente.
0

El cierre es un concepto de lenguaje de programación. Delegado es su realización en MS.NET.

Un delegado en MS.NET es un puntero fuertemente tipado al método de un objeto (una instancia de delegado señala a ambos: un objeto y su método). También hay una manera de combinar varias instancias de delegados vacíos en uno.

Cuestiones relacionadas