委托其实挺简单的,好多人把它搞复杂了。
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)就行了,而没有必要每次去调用那四个方法。
这就是委托的皮毛,但是理解的这个皮毛,再去看委托复杂的例子,包括泛型委托,也不是那么可怕。万事开头难,后来会越来越好的。
posted @ 2009-04-27 10:56 沙漠之驼 阅读(140) 评论(5)
编辑
摘要: 这里介绍BitBlt的应用。我把书上的代码重新写了一边,在该加注释的地方加了一些注释。这样大家读起来就会更加方便一些。这是第十四章的代码。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collectio...
阅读全文
posted @ 2008-03-25 18:37 沙漠之驼 阅读(77) 评论(1)
编辑