Evaluar y enviar comentarios
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
Guía de programación de C#
Delegados (Guía de programación de C#)

Un delegado es un tipo que hace referencia a un método. Cuando se asigna un método a un delegado, éste se comporta exactamente como el método. El método delegado se puede invocar como cualquier otro método, con parámetros y un valor devuelto, como en este ejemplo:

C#
public delegate int PerformCalculation(int x, int y);

Cualquier método de cualquier clase o estructura accesible que coincida con la firma del delegado, la cual está compuesta por los parámetros y el tipo de valor devuelto, puede asignarse al delegado. El método puede ser un método estático o un método de instancia. Esto permite el cambio mediante programación de las llamadas a métodos y la incorporación de nuevo código en las clases existentes. Si conoce la firma del delegado, puede asignar su propio método delegado.

Nota:

En el contexto de la sobrecarga de métodos, la firma de un método no incluye el valor devuelto. Sin embargo, en el contexto de los delegados, la firma sí incluye el valor devuelto.

Esta capacidad para hacer referencia a un método como parámetro hace que los delegados sean idóneos para definir métodos de devolución de llamada. Por ejemplo, un algoritmo de ordenación se podría pasar como referencia al método que compara dos objetos. La separación del código de comparación permite programar el algoritmo de forma más general.

Los delegados tienen las propiedades siguientes:

  • Los delegados son similares a los punteros a función de C++, pero poseen seguridad de tipos.

  • Los delegados permiten pasar los métodos como parámetros.

  • Los delegados pueden utilizarse para definir métodos de devolución de llamada.

  • Los delegados pueden encadenarse; por ejemplo, se puede llamar a varios métodos en un solo evento.

  • No es necesario que los métodos coincidan exactamente con la firma de delegado. Para obtener más información, vea Covariance and ContravarianceCovarianza y contravarianza en los delegados (Guía de programación de C#).

  • La versión 2.0 de C# introdujo el concepto de métodos anónimos, los cuales permiten pasar bloques de código como parámetros en lugar de utilizar métodos definidos independientemente. C# 3.0 introdujo las expresiones lambda como una manera más concisa de escribir bloques de códigos insertados. Tanto los métodos anónimos como las expresiones lambda (en ciertos contextos) se compilan como tipos delegados. En conjunto, estas características se conocen ahora como funciones anónimas. Para obtener más información sobre las expresiones lambda, vea Funciones anónimas (Guía de programación de C#).

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 1.11 Delegados

  • 4.2.6 Tipos de delegado

  • 7.5.5.3 Invocaciones de delegado

  • 15 Delegados

Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2008 Microsoft Corporation. Reservados todos los derechos. Términos de uso  |  Marcas Registradas  |  Privacidad
Page view tracker