Guide des événements C# : Un guide pour débutants

Bonjour, futurs programmeurs ! Aujourd'hui, nous plongeons dans le monde passionnant des événements C#. En tant que votre enseignant informatique de quartier, je suis là pour vous guider à travers ce périple, étape par étape. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - nous allons commencer par les bases et progresser pas à pas. C'est parti !

C# - Events

Qu'est-ce que les événements ?

Imaginez que vous êtes à une fête et que vous attendez l'arrivée de votre ami. Quand il arrive, vous voulez le saluer. En C#, les événements fonctionnent de manière similaire - ils sont un moyen pour les objets de notifier d'autres objets lorsque quelque chose d'intéressant se produit. C'est comme installer un "système de notification" dans votre code.

Analogy du monde réel

Pensez aux événements comme à une sonnette de porte. Quand quelqu'un appuie sur la sonnette (l'événement), vous (le gestionnaire d'événement) répondez en allant à la porte. La sonnette ne sait ni ne se soucie de qui répond - elle annonce simplement que quelqu'un est à la porte.

Utiliser les délégués avec les événements

Avant de plonger dans les événements, nous devons comprendre les délégués. Ne vous inquiétez pas ; ils ne sont pas aussi effrayants qu'ils en ont l'air !

Qu'est-ce qu'un délégué ?

Les délégués sont comme des intermédiaires en C#. Ils conservent des références à des méthodes (fonctions) et peuvent appeler ces méthodes lorsque cela est nécessaire. Pensez à un délégué comme à une carte de visite sophistiquée qui non seulement contient des informations de contact mais peut également passer l'appel pour vous !

Voici un exemple simple de délégué :

public delegate void SimpleDelegate(string message);

class Program
{
static void Main(string[] args)
{
SimpleDelegate d = new SimpleDelegate(ShowMessage);
d("Bonjour, Délégués !");
}

static void ShowMessage(string message)
{
Console.WriteLine(message);
}
}

Dans cet exemple, SimpleDelegate est notre type de délégué. Nous créons une instance de celui-ci (d) et l'associons à la méthode ShowMessage. Quand nous appelons d("Bonjour, Délégués !"), il appelle en réalité ShowMessage("Bonjour, Délégués !").

Déclarer des événements

Maintenant que nous comprenons les délégués, voyons comment fonctionnent les événements. Les événements sont généralement déclarés en utilisant des délégués. Voici la syntaxe de base :

public event DelegateType EventName;

Voici un exemple plus pratique. Imaginons que nous construisons une application bancaire simple :

public class BankAccount
{
private decimal balance;
public delegate void BalanceChangedEventHandler(decimal newBalance);
public event BalanceChangedEventHandler BalanceChanged;

public decimal Balance
{
get { return balance; }
set
{
balance = value;
OnBalanceChanged(balance);
}
}

protected virtual void OnBalanceChanged(decimal newBalance)
{
BalanceChanged?.Invoke(newBalance);
}
}

Dans cet exemple, nous avons créé une classe BankAccount avec un événement BalanceChanged. Chaque fois que le solde change, cet événement est déclenché.

Exemple : Mettre tout ensemble

Voyons comment nous pouvons utiliser cette classe BankAccount avec son événement :

class Program
{
static void Main(string[] args)
{
BankAccount account = new BankAccount();
account.BalanceChanged += Account_BalanceChanged;

account.Balance = 1000;
account.Balance = 2000;
account.Balance = 500;
}

private static void Account_BalanceChanged(decimal newBalance)
{
Console.WriteLine($"Votre nouveau solde est : ${newBalance}");
}
}

Lorsque vous exécutez ce programme, vous verrez :

Votre nouveau solde est : $1000
Votre nouveau solde est : $2000
Votre nouveau solde est : $500

Décomposition

  1. Nous créons un objet BankAccount.
  2. Nous nous abonnons à son événement BalanceChanged en utilisant l'opérateur +=.
  3. Nous changeons le solde trois fois.
  4. Chaque fois que le solde change, notre méthode Account_BalanceChanged est appelée automatiquement.

C'est la magie des événements ! La classe BankAccount n'a pas besoin de savoir qui écoute ses changements. Elle les annonce simplement, et ceux qui sont intéressés peuvent écouter et réagir.

Patterns communs des événements

Voici quelques patterns courants que vous verrez avec les événements en C# :

Pattern Description Exemple
EventHandler Pattern d'événement standard public event EventHandler MyEvent;
Custom EventArgs Pour passer des données personnalisées public event EventHandler<CustomEventArgs> MyEvent;
Event Accessor Pour contrôler l'accès à l'événement public event EventHandler MyEvent { add { ... } remove { ... } }

Conclusion

Les événements en C# sont un moyen puissant de créer des applications faiblement couplées et réactives. Ils permettent aux objets de communiquer sans avoir besoin de connaître les détails des autres, tout comme une station de radio diffuse à qui veut l'écouter.

Souvenez-vous, la pratique rend parfait ! Essayez de créer vos propres classes avec des événements et expérimentez avec différents scénarios. Avant de vous en rendre compte, vous deviendrez un expert des événements, orchestrant une symphonie d'objets dans vos applications C# !

Bonne programmation, futurs programmeurs ! ??

Credits: Image by storyset