Cómo explicar al delegado en una entrevista [cerrado]

Sé que tenemos muchas preguntas de tipo similar en Stackoverflow, también sé qué es delegado y cómo funciona, pero a veces es un poco difícil explicar el delegado en las entrevistas, ¿alguna sugerencia sobre cómo explicarlo?

preguntado el 08 de enero de 11 a las 16:01

Si realmente entendiera a los delegados, no tendría problemas para explicarlos en una entrevista. Sugiero estudiar. -

Además, por si acaso, para la entrevista debes recordar cuál es la diferencia entre Delegado y Evento :) -

5 Respuestas

Es un puntero de función fuertemente tipado, esencialmente. Es una forma de pasar código arbitrario como parámetro de método.

Respondido el 08 de enero de 11 a las 19:01

A fuertemente tipado puntero de función. - Oded

+1 para ti @Oded, buena corrección. - paul

Una parte realmente importante es que no es solo un puntero de función, sino que también puede contener un primer argumento enlazado (generalmente este). De lo contrario, no funcionaría con métodos de instancia. - CódigosInChaos

OK entonces ¿Qué es un puntero de función?? Esta es una explicación que no explica nada a menos que ya sepa qué es un "puntero de función". ¿Por qué un programador de C # debería conocer este concepto de C? - Eric Lippert

¿Y realmente puedes pasar "código arbitrario"? "clase C {}" es un código perfectamente válido, al igual que "[Obsolete]" y "using System;" pero ninguno de ellos se transmite en delegados. - Eric Lippert

Un delegado es un elemento del lenguaje C # que le permite hacer referencia a un método.

Respondido el 08 de enero de 11 a las 19:01

Algunas de las formas en que he escuchado que se describen a los delegados:

  • Soporte de lenguaje y framework para funciones de primera clase.
  • Interfaces de método único.
  • Punteros de función de tipo seguro.
  • Objetos que representan una secuencia de operaciones con un contrato bien definido.

Si se investiga para obtener más detalles, lo haría:

  • Distinga entre System.Delegate, delegate-tipos, tipo de delegado las variables y delegarcasos; detallar su declaración, asignación, aprobación e invocación.
  • Enfatice su naturaleza inmutable de tipo de referencia.
  • Discutir los delegados de multidifusión.
  • Enumere algunos de los tipos de delegados comunes en el marco, especialmente las familias Func <> y Action <>.
  • Vincular a los delegados con grupos de métodos, métodos anónimos, expresiones lambda y cierres. Explique los usos del delegate palabra clave en C #, así como las diversas cortesías otorgadas al programador por el compilador
  • Discuta su relación con subprocesos, eventos, árboles de expresión y LINQ.
  • Discutir:
    • Funciones de orden superior: curado, combinadores, etc.
    • Cómo se puede utilizar a los delegados con la reflexión.
    • Varianza respecto a los delegados.

Respondido el 08 de enero de 11 a las 19:01

¿Qué hay de usar la analogía de la vida real?

http://www.wordreference.com/definition/delegate

encomendar (una tarea o responsabilidad) a otra persona (en este caso sería un método).

En informática, podría explicar esto de la misma manera. Cuando pasa un delegado a un método, no sabe sobre la implementación del método, simplemente es una referencia a ese método, y el delegado se encarga de ejecutarlo.

Respondido el 08 de enero de 11 a las 19:01

Es una entidad que encapsula la firma del método y proporciona un mecanismo orientado a objetos con seguridad de tipos para tratar funciones como objetos sin tener que usar punteros de función.

respondido 02 mar '11, 23:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.