Existe-t-il une différence de fonctionnalité entre l'utilisation d'un EventHandler et la définition d'un événement?Quand/Pourquoi utiliseriez-vous un EventHandler plutôt qu'un simple événement?
0
A
Répondre
2
Ce sont deux choses différentes
event
Déclare un événement:
https://msdn.microsoft.com/en-us/library/8627sbea.aspx
EventHandler
définit la méthode qu'un événement soulèvera:
https://msdn.microsoft.com/en-us/library/system.eventhandler(v=vs.110).aspx
EventHandler<TEventArgs>
est un emballage pratique pour votre commande EventArgs
:
https://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.110).aspx
Différentes façons de vous abonner à un événement
using System;
namespace ConsoleApplication3
{
internal class Program
{
private static void Main(string[] args)
{
// using a method
MyEvent += Program_MyEvent;
// using EventHandler, possible but not mandatory
MyEvent += new EventHandler(Target);
// using lambda syntax
MyEvent += (sender, eventArgs) => { };
// using delegate
MyEvent += delegate (object sender, EventArgs eventArgs) { };
// using delegate, signature is optional actually
MyEvent += delegate { };
}
private static void Target(object sender, EventArgs eventArgs)
{
}
private static void Program_MyEvent(object sender, EventArgs e)
{
}
public static event EventHandler MyEvent;
}
}
Ainsi est-il une diffrence entre faire + = EventHandler et + = Méthode? – Spaghetti
Non, vous pouvez mais ce n'est pas nécessaire, voir ma réponse mise à jour. – Aybe
@Spaghetti - Non, chacun des cinq styles '+ =' de cette réponse fait exactement la même chose - ils attachent une instance de délégué à l'événement. – Enigmativity