委托对象封装多个方法的使用:
?一、委托的使用:
?http://cb123456.iteye.com/blog/2213009
?
?二、委托对象封装多个方法:
?委托对象可以封装多个方法(称为多路广播委托),这些方法的集合称为对象的调用列表。可以使用"+","-","+=","-="等运算符向调用列表中增加或者移除方法
?
?三、示例:
?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Proj6_10
{ //委托对象可以封装多个方法(称为多路广播委托)
delegate void mydelegate(double x,double y); //申明委托类型
class MyDeClass
{
public void add(double x,double y){
Console.WriteLine("{0}+{1}={2}",x,y,x+y);
}
public void sub(double x, double y)
{
Console.WriteLine("{0}-{1}={2}", x, y, x - y);
}
public void mul(double x, double y)
{
Console.WriteLine("{0}*{1}={2}", x, y, x * y);
}
public void div(double x, double y)
{
Console.WriteLine("{0}/{1}={2}", x, y, x / y);
}
}
class Program
{
static void Main(string[] args)
{
MyDeClass obj = new MyDeClass();
mydelegate p, a;
a = obj.add;//直接obj.add赋值给委托对象
p = a;//将add方法添加到调用列表中
a = obj.sub;//直接obj.add赋值给委托对象
p+=a;//将sub方法添加到调用列表中
a = obj.mul;//直接obj.add赋值给委托对象
p += a;//将mul方法添加到调用列表中
a = obj.div;//直接obj.add赋值给委托对象
p += a;//将div方法添加到调用列表中
p(5,8);
//在主函数中,通过调用p(5,8)执行所有的委托
}
}
}
?
?
?
?四、运行效果:
?
?
?五、解释:
?将4个关联的委托对象添加到调用列表p中,通过调用p(5,8)执行所有其中的委托,
?对于p(5,8)语句的执行过程是:p是一个委托对象,它指向obj对象的4个事件处理方法,将参数5和8传递给这4个事件处理方法,分别执行这些方法,想当于执行obj.add(5,8),obj.sub(5,8),obj.mul(5,8),obj.div(5,8)
?
原文:http://cb123456.iteye.com/blog/2213360