ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 论委托

论委托

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-04-27 16:13:39 0 删除 编辑

委托其实挺简单的,好多人把它搞复杂了。

1.首先,有一堆长的相似的方法

Code
委托的方法#region 委托的方法

private static void OutPutWord(int a, int b)
{

}

//Add
private static void NumAdd(int a, int b)
{
    Console.WriteLine("Add result is {0}", a + b);
}

//Substract
private static void NumSub(int a, int b)
{
    Console.WriteLine("Sub result is {0}", a - b);
}

//Multiply
private static void NumMul(int a, int b)
{
    Console.WriteLine("Mul result is {0}", a * b);
}

//Divide
private static void NumDiv(int a, int b)
{
    Console.WriteLine("Div result is {0:F}", (decimal) a/(decimal) b);
}

#endregion
 我们看的出来,这几个方法长的极为相似:(1)他们都没有返回值。(2)他们的两个参数都是int型的。(3)内容上,他们都是对数字的处理。

可是,如果要求我们老是对两个数字进行加减乘除操作,我们就得不停地调用这四个方法,好烦。正在此时,委托出场了。委托对于方法,有一种提纲挈领的作用,因此它的出场,就是抓住了这几个方法的共同点。

2.委托的出场

//定义一个处理数字的委托
public delegate void CopeWithNumber(int num1, int num2);

delegate是一个关键字,表示定义委托,void表示没有返回值,int num1,int num2表示输入参数都是int型的。可以看得出来,这个委托和方法长的特别像。这种像只是形似,而本质不同。但是在实际应用中,我们没有必要太在乎这个,现在方法有了,委托也有了,并且长的这么像,他们之间肯定有某种联系,通过这种联系,就可以调用方法了……

3.增加联系,调用方法

Code
public static void SimpleTest()
{
    //将方法加入委托之中
    CopeWithNumber copeWithNumber = new CopeWithNumber(OutPutWord);
    copeWithNumber += NumAdd;
    copeWithNumber += NumSub;
    copeWithNumber += NumMul;
    copeWithNumber += NumDiv;
    copeWithNumber(2, 3);
    Console.ReadLine();
}
我们可以看到,新建一个委托对象,将方法加入到委托的对象中,然后通过一句:copeWithNumber(2,3),就可以实现对2,3的加减乘除,无论在什么地方,只要用copeWithNumber(2,3)就行了,而没有必要每次去调用那四个方法。

这就是委托的皮毛,但是理解的这个皮毛,再去看委托复杂的例子,包括泛型委托,也不是那么可怕。万事开头难,后来会越来越好的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-591956/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5307699