De MSDN:C# Delegados y método firmas
Cualquier método que coincide con la firma del delegado, que consiste en el tipo retorno y parámetros, pueden ser asignado al delegado.
Entonces, ¿cómo es esto posible:
public delegate void AlarmEventHandler(object sender, EventArgs e);
public event AlarmEventHandler Alarm;
protected virtual void OnAlarm(EventArgs e)
{
AlarmEventHandler handler = Alarm;
if (handler != null)
{
// Invokes the delegates.
handler(this, e);
}
}
delegado AlarmEventHander
y eventos AlarmEventHandler
tienen diferentes firmas aún handler
se pueden asignar a Alarm
.
Tal vez estoy malinterpretando a los delegados de alguna manera, y estaría muy agradecido si alguien pudiera explicarme dónde me estoy equivocando.
Creo que ha confundido algunos de los nombres de sus símbolos. En el código anterior, el delegado se llama 'AlarmEventHandler' y el evento, que es del mismo tipo, se llama' Alarm'. Como son del mismo tipo, no hay ningún problema con la tarea. Creo que lo que te confunde es el método 'OnAlarm' que parece responder a un evento diferente con un tipo de delegado diferente. –
Ver: eventos similares a campos. http://msdn.microsoft.com/en-us/library/aa664455(v=vs.71).aspx – Ani
No veo el problema aquí. Los tipos coinciden exactamente (ambos son 'AlarmEventHandler'), por lo que uno esperaría poder asignar uno al otro. – finnw