Requirement: the application of the delegate object creates an object using the delegate, uses the addition and subtraction operations, and uses the getinvocationlist method.
Practice:
Using system;
Using system. Collections. Generic;
Using system. text;
Namespace lab3
{
Delegate void mydelegate (double param1, double param2 );
Class delegatetest
{
Public void myadd (double param1, double param2)
{
Double result = param1 + param2;
Console. writeline ("I am using Add ()! ");
Console. writeline ("{0} + {1} = {2}", param1, param2, result );
}
Public void mysub (double param1, double param2)
{
Double result = param1-param2;
Console. writeline ("I am user sub ()! ");
Console. writeline ("{0}-{1} = {2}", param1, param2, result );
}
Public void mymul (double param1, double param2)
{
Double result = param1 * param2;
Console. writeline ("I am usring MUL ()! ");
Console. writeline ("{0} * {1} = {2}", param1, param2, result );
}
Public void mydiv (double param1, double param2)
{
Double result = param1/param2;
Console. writeline ("I am usring del ()! ");
Console. writeline ("{0}/{1} = {2}", param1, param2, result );
}
}
Class delegateentry
{
Static void main (string [] ARGs)
{
Console. writeline ("delegate tesing begin .....");
Delegatetest = new delegatetest ();
Mydelegate delegatehandleadd = new mydelegate (delegatetest. myadd );
Mydelegate delegatehandlesub = new mydelegate (delegatetest. mysub );
Mydelegate delegatehandlemul = new mydelegate (delegatetest. mymul );
Mydelegate delegatehandlediv = new mydelegate (delegatetest. mydiv );
If (delegatehandleadd! = NULL)
{
Delegatehandleadd (5, 3 );
}
Console. writeline ("-----------------------------------------------------------------------------");
If (delegatehandlesub! = NULL)
{
Delegatehandlesub (5, 3 );
}
If (delegatehandlemul! = NULL)
{
Delegatehandlemul (5, 3 );
}
Console. writeline ("-----------------------------------------------------------------------------");
If (delegatehandlediv! = NULL)
{
Delegatehandlediv (5, 3 );
}
Mydelegate delegatecalculate = NULL;
Delegatecalculate + = delegatehandleadd;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate + = delegatehandleadd;]");
Delegatecalculate (5, 3 );
Delegatecalculate + = delegatehandlesub;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate + = delegatehandlesub;]");
Delegatecalculate (5, 3 );
Delegatecalculate + = delegatehandlemul;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate + = delegatehandlemul;]");
Delegatecalculate (5, 3 );
Delegatecalculate + = delegatehandlediv;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate + = delegatehandlediv;]");
Delegatecalculate (5, 3 );
Delegate [] delegatearray = delegatecalculate. getinvocationlist ();
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate. getinvocationlist ();]");
Console. writeline ("/n I have using these methods:/N ");
Foreach (delegate delgt in delegatearray)
{
Console. writeline (delgt. method. getbasedefinition ());
}
Delegatecalculate-= delegatehandleadd;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate-= delegatehandleadd;]");
Delegatecalculate (5, 3 );
Delegatecalculate-= delegatehandlesub;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate-= delegatehandlesub;]");
Delegatecalculate (5, 3 );
Delegatecalculate-= delegatehandlemul;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate-= delegatehandlemul;]");
Delegatecalculate (5, 3 );
Delegatecalculate-= delegatehandlediv;
Console. writeline ("/n -----------------------------------------------------------------------------");
Console. writeline ("I am using [delegatecalculate-= delegatehandlediv;]");
Console. writeline ("delegate tesing end .....");
Console. Readline ();
}
}
}