自己写了个最简单、基本的委托实例,给新程加以理解:
首先要明白
1、委托和类一样是对象
2、使用前也要通过new来实例化
3、相当于C++里的函数指针,把方法通过参数来传递使用
4、要传递的方法参数和返回类型必须与定义的委托参数一致
static void Main()
{
 //实例化委托
    delTest dtest = new delTest(add);
    
    //调用委托
    dtest(3, 4);
}
/// <summary>
/// 定义委托
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
public delegate void delTest(int a, int b);
    
/// <summary>
/// 要调用的过程方法
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
private void add(int x, int y)
{
    int xy=x + y; 
    Console.Write("值:" + xy); 
}
附:多点委托 
前面提到的委托都只包含对一个方法的调用,如果需要调用多个方法,需要多次显示的调用这个委托,我们还有另的选择,我们可以让一个委托中包含多个方法,这样我们一次显示调用委托,就可以按照顺序连续的调用多个方法。看下面的例子: 
public delegate void MultiDelegate(string name); 
public void AgentDemo1(string str) 
{ 
Console.WriteLine(str + “this is AgentDemo1\n”); 
} 
public void AgentDemo2(string s) 
{ 
Console.WriteLine(s + “this is AgentDemo2\n”); 
} 
MultiDelegate multiDemo = new MultiDelegate(AgentDemo1); 
multiDemo += new MultiDelegate(AgentDemo2); 
multiDemo(“multiDemo test :”); 
输出的结果应该是: 
multiDemo test :this is AgentDemo1 
mutliDemo test :this is AgentDemo2 
可以看到我们一次显示的调用一个委托,它顺序的(按照你添加方法的顺序)执行了方法AgentDemo1和AgentDemo2。这里要注意的有几点: 
● 委托支持 +=,-=这样的运算符,对应为添加或去掉一个方法 
● 多点委托不可以定义有返回值,因为无法处理多个方法的返回值,所以如果要使用多点委托,应该用void,否则你的编译会返回一个错误 
● 多点委托不建议你的参数列表中有OUT的类型,这样只会out最后一个方法的值,其他的值会丢失。 
 
                     
                    
                 
                    
                
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号