begin process at 2008 05 17 13:40:14
1 174 053 membres
172 nouveaux aujourd'hui
13 974 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LES DÉLÉGUÉS


Information sur la source

Catégorie :Tutoriaux Source .NET ( DotNet ) Classé sous : délégué, delegate Niveau : Débutant Date de création : 08/04/2003 Date de mise à jour : 08/04/2003 21:47:37 Vu : 8 355

Note :
9,8 / 10 - par 5 personnes
9,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Cet exemple montre comment "pointer" sur des fonctions avec les délégués.
Les délégués permettent de pointer plusieurs fonctions, ce qui permet d'utiliser un seul délégué pour lancer plusieurs fonctions.

Source

  • using System;
  • /*
  • ** Ces délégué sont déclarés en dehors de toutes classes,
  • ** ils peuvent pourtant être déclarés dans une classe.
  • */
  • delegate void Délégué();
  • //Ce délégué ne peut pointer que sur des fonctions sans arguments
  • //et retournants void.
  • delegate int Délégué2(int a,bool b);
  • //Paramètres (int et bool), retourne int.
  • class ClassePrincipale
  • {
  • public static void Main()
  • {
  • Délégué test=new Délégué(Classe1.Fonction1);
  • //création d'un délégué de type Délégué
  • //on le fait pointer sur "void Fonction1()" de Classe1.
  • Délégué2 test2=new Délégué2(Classe2.Fonction4);
  • //création d'un délégué de type Délégué2.
  • //on le fait pointer sur "int Fonction4(int,bool)" de Classe2.
  • Classe2 c2=new Classe2();
  • /*
  • ** L'opérateur += est utilisé pour ajouter une fonction
  • ** au poiteur (délégué).
  • ** Si on utilise l'opérateur =, la fonction d'avant est
  • ** perdue.
  • */
  • test+=new Délégué(c2.Fonction3); //ajout d'une fonction.
  • test+=new Délégué(Classe1.Fonction2); //ajout d'une fonction.
  • test(); //appel de la ou les fonction(s) référencées.
  • Console.Out.WriteLine();
  • test-=new Délégué(c2.Fonction3);
  • //Le délégué ne pointe plus sur
  • //la fonction Classe2.Fonction3().
  • test();
  • Console.Out.WriteLine();
  • test=null; //Le délégué ne pointe plus sur aucune fonction.
  • test=new Délégué(c2.Fonction3);
  • test();
  • Console.Out.WriteLine();
  • int a=test2(456,true);
  • Console.Out.WriteLine(a);
  • }
  • }
  • class Classe1 : Object
  • {
  • private Classe1() //Classe non instanciable.
  • {
  • }
  • public static void Fonction1()
  • {
  • Console.Out.WriteLine("Fonction 1");
  • }
  • public static void Fonction2()
  • {
  • Console.Out.WriteLine("Fonction 2");
  • }
  • }
  • class Classe2
  • {
  • public void Fonction3()
  • {
  • Console.Out.WriteLine("Fonction 3");
  • }
  • public static int Fonction4(int a,bool b)
  • {
  • Console.Out.WriteLine("int : " + a);
  • Console.Out.WriteLine("bool : " + b);
  • return a;
  • }
  • }
using System;

/*
** Ces délégué sont déclarés en dehors de toutes classes,
** ils peuvent pourtant être déclarés dans une classe.
*/

delegate void Délégué();
//Ce délégué ne peut pointer que sur des fonctions sans arguments
//et retournants void.

delegate int  Délégué2(int a,bool b);
//Paramètres (int et bool), retourne int.


class ClassePrincipale
{
   public static void Main()
   {
      Délégué test=new Délégué(Classe1.Fonction1);
      //création d'un délégué de type Délégué
      //on le fait pointer sur "void Fonction1()" de Classe1.
      
      Délégué2 test2=new Délégué2(Classe2.Fonction4);
      //création d'un délégué de type Délégué2.
      //on le fait pointer sur "int Fonction4(int,bool)" de Classe2.
      
      Classe2 c2=new Classe2();
      
      /*
      ** L'opérateur += est utilisé pour ajouter une fonction
      ** au poiteur (délégué).
      ** Si on utilise l'opérateur =, la fonction d'avant est
      ** perdue.
      */
      test+=new Délégué(c2.Fonction3); //ajout d'une fonction.
      test+=new Délégué(Classe1.Fonction2); //ajout d'une fonction.
      
      test(); //appel de la ou les fonction(s) référencées.
      
      Console.Out.WriteLine();
      
      test-=new Délégué(c2.Fonction3);
      //Le délégué ne pointe plus sur
      //la fonction Classe2.Fonction3().
      
      test();
      
      Console.Out.WriteLine();
      
      test=null; //Le délégué ne pointe plus sur aucune fonction.
      test=new Délégué(c2.Fonction3);
      test();
      
      Console.Out.WriteLine();
      int a=test2(456,true);
      Console.Out.WriteLine(a);
   }
}


class Classe1 : Object
{
   private Classe1() //Classe non instanciable.
   {
   }
   
   public static void Fonction1()
   {
      Console.Out.WriteLine("Fonction 1");
   }
   
   public static void Fonction2()
   {
      Console.Out.WriteLine("Fonction 2");
   }
}


class Classe2
{
   public void Fonction3()
   {
      Console.Out.WriteLine("Fonction 3");
   }
   
   public static int Fonction4(int a,bool b)
   {
      Console.Out.WriteLine("int : " + a);
      Console.Out.WriteLine("bool : " + b);
      return a;
   }
}
 
    Aucun commentaire pour le moment.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Boutique

Boutique de goodies CodeS-SourceS