Qu'est-ce qu'un événement
Les événements sont essentiellement des actions de l'utilisateur, telles que les pressions sur les touches, les clics, les mouvements de souris, etc., ou certaines informations d'invite, telles que les notifications générées par le système. L'application doit répondre lorsqu'un événement se produit. L'événement est un type de référence, en fait, c'est aussi un délégué spécial. En règle générale, chaque occurrence d'événement produit un expéditeur et un destinataire. La méthode d'envoi fait référence à l'objet qui a provoqué l'événement et le destinataire fait référence à l'acquisition et au traitement de l'événement.
Syntaxe de la définition d'événement
L'événement de nom d'événement de nom de délégué d'événement de modificateur d'accès
doit être utilisé avec délégué.
Étant donné que le délégué est utilisé dans l'événement, il est nécessaire de définir le délégué avant de définir l'événement.
Après avoir défini l'événement, vous devez définir la méthode utilisée par l'événement et appeler le délégué via l'événement.
Cas de base:
using System;
namespace MySpace
{
class Program
{
//定义委托
public delegate void SayDelegate();
//定义事件
public event SayDelegate SayEvent;
//定义委托中调用的方法
public void SayHello()
{
Console.WriteLine("Hello Event!");
}
//创建触发事件的方法
public void SayEventTrigger()
{
//触发事件,必须与事件同名方法
SayEvent();
}
//主函数
static void Main(string[] args)
{
//创建Program类的实例
Program program = new Program();
//实例化事件,使用委托
program.SayEvent = new SayDelegate(program.SayHello);
//调用触发事件的方法
program.SayEventTrigger();
Console.ReadKey();
}
}
}
résultat de l'opération:
Cas complexe
Utiliser la délégation multicast en cas d'événement pour terminer l'opération de précommande de différents produits
using System;
namespace MySpace
{
class MyEvent
{
//定义委托
public delegate void BuyDelegate();
//定义事件
public event BuyDelegate BuyEvent;
//定义委托中使用的方法
public static void BuyFood()
{
Console.WriteLine("Buy Food");
}
public static void BuyCake()
{
Console.WriteLine("Buy Cake");
}
public static void BuyFlower()
{
Console.WriteLine("Buy Flower");
}
public void InvokeEvent()
{
BuyEvent();
}
}
class Program
{
static void Main(string[] args)
{
//创建MyEvent类的实例
MyEvent myEvent = new MyEvent();
//实例化事件,使用委托指向处理方法
myEvent.BuyEvent += new MyEvent.BuyDelegate(MyEvent.BuyFood);
myEvent.BuyEvent += new MyEvent.BuyDelegate(MyEvent.BuyCake);
myEvent.BuyEvent += new MyEvent.BuyDelegate(MyEvent.BuyFlower);
//调用触发事件的方法
myEvent.InvokeEvent();
Console.WriteLine();
}
}
}
résultat de l'opération:
Veuillez noter:
Lors de l'utilisation d'événements, si la définition et l'appel de l'événement ne sont pas dans la même classe, l'événement instancié ne peut apparaître que sur le côté gauche de l'opérateur + = ou - =.