.NET_STAR

打造技术团队,愿与您共同开创事业!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

自己写了个最简单、基本的委托实例,给新程加以理解:
首先要明白
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最后一个方法的值,其他的值会丢失。

posted on 2009-08-10 15:39  雷明  阅读(507)  评论(0编辑  收藏  举报