Red de conocimientos turísticos - Información de alquiler - Preguntas sobre delegados y eventos en C#: acabo de aprender sobre delegados y eventos, pero no entiendo los conceptos.

Preguntas sobre delegados y eventos en C#: acabo de aprender sobre delegados y eventos, pero no entiendo los conceptos.

Se genera un evento cuando el usuario hace clic en un control o se desplaza sobre un área. Los eventos los proporcionan clases de control o ventana, como la clase Botón que envía notificaciones cuando se presiona un botón.

Para facilitar la programación, el programa que desencadena el evento generalmente se coloca en un módulo o componente separado, que suele ser una clase. Por ejemplo, una clase de control o una clase de ventana es una clase separada. Cuando ocurre un evento, la clase emisora ​​(o clase de control) notifica a la clase del programa principal o a la clase receptora del evento y pasa los parámetros relevantes. El método para ejecutar la notificación es vincular un método, y la clase receptora vincula el método al evento de la clase emisora. Cuando la clase emisora ​​envía el evento, se ejecutará el método vinculado al evento en la clase receptora.

Los eventos son tipos delegados y puedes vincular métodos a eventos usando el operador de asignación aditiva =. Puede consultar Designer.cs de su programa WinForm donde el controlador de control está vinculado al controlador de eventos mediante el símbolo =. La clase receptora debe tener un método con la misma firma que el evento (como una firma de delegado). El método (llamado controlador de eventos) puede entonces tomar la acción adecuada en respuesta al evento. Sin embargo, el programador no necesita crear un método para vincular el evento en la clase receptora por adelantado; al ingresar el símbolo =, el sistema de programación le pedirá que presione la tecla Tab para agregar automáticamente el nombre del método vinculado. Presione la tecla Tab por segunda vez para agregar automáticamente el nombre del método vinculado. Agregue un parámetro de método con la misma firma de delegado que la clase emisora.

La firma de un evento en .NET Framework suele ser: el primer parámetro es un objeto que hace referencia al origen del evento y el segundo parámetro es una clase que transmite datos relacionados con el evento. Sin embargo, este formulario no es obligatorio en C# y, siempre que la firma del evento sea nula, puede ser la misma que cualquier firma de delegado válida.

La palabra clave event declara un evento. La delegación es la base de los eventos y el tipo de evento debe ser un tipo de delegado, por lo tanto, declare un delegado antes de declarar un evento. Aquí hay un ejemplo simple:

controlador de vacío delegado público

prueba de clase

{

controlador de evento público OnClick;

}

Aquí, el delegado se declara primero fuera de la clase Handler y luego el evento se declara usando la palabra clave event dentro de la clase. El delegado también se puede declarar dentro de la clase. OnClick pertenece al tipo de controlador y el evento lo implementa un controlador delegado, que encapsula un método para implementar el evento.

El tipo de retorno del delegado debe ser nulo, pero puede aceptar parámetros, por ejemplo:

public delegado void TestEventDelegate(object sender, System.EventArgs e

Los eventos tienen firmas, al igual que los métodos, que incluyen un nombre y una lista de parámetros. La firma de un evento está definida por el tipo de delegado y la lista de parámetros del delegado es la lista de eventos.

Debido al espacio limitado, es imposible dar ejemplos. Consulte mi blog, busque 163 blog danyaody en la sección web de Baidu, Capítulo 3, Ejemplo 3-14.