Esto se votará precisamente por la razón por la cual es correcto. C# no implementa delegados, lo que implementa es reenvío de llamadas. Este uso incorrecto de la nomenclatura es probablemente el mayor problema con C# en este sentido.
El siguiente documento de ACM es la primera descripción de lo que más tarde se llamaría un delegado. Básicamente, un delegado es algo que parece ser una instancia de un objeto (la forma en que se implementa realmente es irrelevante). Esto significa que puede llamar a métodos, propiedades de acceso, etc. desde el delegado.
http://web.media.mit.edu/~lieber/Lieberary/OOP/Delegation/Delegation.html
Lo que C# es implementos devoluciones de llamada o de desvío de llamadas (todo depende de la forma de usarlos). Estos no son delegados. Para ser un delegado uno puede acceder al objeto como si fuera el objeto mismo.
Cuando un bolígrafo delega un mensaje de dibujo en un bolígrafo prototípico, significa "No sé cómo manejar el mensaje de dibujo. Me gustaría que me lo contestes si puedes, pero si tienes más preguntas, como cuál es el valor de mi variable x, o si necesitas hacer algo, deberías volver y preguntar ". Si el mensaje se delega aún más, todas las preguntas sobre los valores de las variables o las solicitudes de respuesta a los mensajes se infieren al objeto que delegó el mensaje en primer lugar.- Henry Lieberman
Entonces, ¿cómo se estropeó? Para ser honesto, no sé. SÉ que sé que he estado usando delegados (hace más de 16 años) mucho antes de C# y los implementos de C# no son delegados.
Aquí puede encontrar una explicación muy buena.
http://www.saturnflyer.com/blog/jim/2012/07/06/the-gang-of-four-is-wrong-and-you-dont-understand-delegation/
delegación real es más que la creación de devoluciones de llamada o el desvío de llamadas. Un delegado real me permite llamar a cualquier método en ese objeto, obtener y/o establecer propiedades públicas, etc., todo como si fuera el objeto mismo. Esto es mucho más poderoso y realmente más fácil de usar que la "delegación" de C#.
El PO preguntó:
¿La devolución de llamada término en el contexto de los delegados decir, "un delegado delegar funciona a otro delegado finde para terminar alguna tarea"?
La respuesta a esto es sí. Una devolución de llamada en el contexto de delegados puede solo puede ser utilizada para finalizar alguna tarea. Por ejemplo, tienes una clase que obtiene datos de un sitio meteorológico. Como no es determinista, implementar una devolución de llamada cuando los datos se han recibido (y tal vez analizado) sería espectacular.
En cuanto a por qué se corrompió la delegación, no tengo ni idea. Espero que C# implemente la delegación VERDADERA.
Merece la pena pensar en un delegado como un tipo que es un puntero a un método: como una interfaz o una clase: es una plantilla para una instancia que es en sí misma una referencia a su método interno: la instancia se puede pasar entre objetos e invocado/ejecutado en cualquier momento. Si tiene alguna forma de hacerse con "C# en profundidad" por Jon Skeet y leer la sección del capítulo 2 sobre Delegados y el Capítulo 5 sobre Delegados, entenderemos la "evolución" de los delegados de su "larva" etapa "en C# 1.0, a su forma totalmente" evolucionada "en C# 3.0. Nunca he encontrado una mejor exposición – BillW