Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

TQ – méthode anonyme

Thèmes des Questions – C# (C Sharp)



On reprend un exemple déjà traité sur la création et l’utilisation d’événements :
La classe TableEvent contient un tableau de string et un indexeur en lecture et écriture.

public class TableEvent {
  private string[ ] table = {"aa","bb","cc","dd","ee"};
  public virtual string this[int index] {
      get { return table[index]; }
      set { table[index] = value; }
  }
}

On a rendu cette classe TableEvent sensible à toute modification d’un élément du tableau de string en créant un événement Changer dans la classe TableEvent. Cet événement contient des informations sur le rang, l’ancienne valeur et la nouvelle valeur de la chaîne modifiée dans le tableau interne, ces informations sont contenues dans l’événement dont la classe est nommée ChangerEventArgs.

Dans la classe Exercice on crée un gestionnaire de cet événement nommé Changer_liste et on abonne l’objet liste de classe TableEvent à ce gestionnaire de telle manière que lors de l’exécution de la méthode Main on obtienne l’affichage suivant :

Question : remplacer le gestionnaire static public void Changer_liste(…) par une méthode anonyme à laquelle on abonne l’objet liste de classe TableEvent de telle façon que l’affichage obtenu soit exactement le même que ci-dessus.

using System;
 //-- classe d'informations personnalisées sur l'événement :
 public class ChangerEventArgs : EventArgs 
 {
 public int infoRang ;
 public string oldValue, newValue;
 public ChangerEventArgs (int rang, string oldStr, string newStr) 
 {
 infoRang = rang ;
 oldValue = oldStr;
 newValue = newStr;
 }
 }
 //-- déclaration du type délégation normalisé :
 public delegate void ChangerEventHandler ( object sender, ChangerEventArgs e );
 public class TableEvent
 {
 private string[ ] table =
 {
 "aa","bb","cc","dd","ee"
 };
 public virtual string this[int index]
 {
 get 
 {
 return table[index];
 }
 set 
 {
 OnChanger( index, table[index], value ); 
 table[index] = value;
 }
 }
 //-- déclaration d'une référence event de type délégué :
 public event  ChangerEventHandler Changer;
 //-- méthode publique qui lance l'événement :
 public void OnChanger(int rang, string oldStr, string newStr ) 
 {
 if ( Changer!= null )
 Changer( this , new ChangerEventArgs ( rang, oldStr, newStr ) );
 }
 }
 class Exercice
 {
 static public void Changer_liste( object sender, ChangerEventArgs e ) 
 {
 //-- gestionnaire d'événement Changer: méthode de classe.
 System.Console.WriteLine("\nmodification dans la liste au rang : "+e.infoRang );
 System.Console.WriteLine("ancienne valeur =  "+e.oldValue+", changée en : "+e.newValue); 
 }
 public static void Main( ) 
 {
 TableEvent  liste = new TableEvent( );
 //-- abonnement au gestionnaire :
 liste.Changer += new ChangerEventHandler( Changer_liste );
 liste[0]="xxxx";
 liste[4]="yyy";
 Console.ReadLine( );
 }
 }

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More