- 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;
}
}