using System;
public class Article {
public int m_Prix = 0;
public Article(int Prix) { m_Prix = Prix; }
public int IncPrix(int i) {
m_Prix += i;
return m_Prix;
}
}
public class Program {
public delegate int Deleg(int i);
public static void Main() {
Article a = new Article(100);
Article b = new Article(103);
Article c = new Article(107);
// Construction du délégué ( a.IncPrix , b.IncPrix , c.IncPrix ).
Deleg deleg = a.IncPrix;
Deleg deleg1 = b.IncPrix;
deleg1 += c.IncPrix;
deleg += deleg1;
deleg(10);
Console.WriteLine("a:{0} b:{1} c:{2}",
a.m_Prix , b.m_Prix , c.m_Prix );
// Essai de suppression du délégué ( a.IncPrix , c.IncPrix )
// non présent dans ( a.IncPrix , b.IncPrix , c.IncPrix ).
Deleg deleg2 = a.IncPrix;
deleg2 += c.IncPrix;
deleg -= deleg2;
deleg(10);
Console.WriteLine("a:{0} b:{1} c:{2}",
a.m_Prix , b.m_Prix , c.m_Prix );
// Essai de suppression du délégué ( a.IncPrix , b.IncPrix )
// présent dans ( a.IncPrix , b.IncPrix , c.IncPrix ).
Deleg deleg3 = a.IncPrix;
deleg3 += b.IncPrix;
deleg -= deleg3;
deleg(10);
Console.WriteLine("a:{0} b:{1} c:{2}",
a.m_Prix , b.m_Prix , c.m_Prix);
}
}