多播委托的示例程序:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
//声明一个委托
public delegate void msg();
//编写一个类
class messges
{
//messges类下的一个成员方法m1
public static void m1()
{ Console.WriteLine("方法一被huashanlin调用"); }
//messges类下的一个成员方法m2
public static void m2()
{ Console.WriteLine("方法二被huashanlin调用"); }
//messges类下的一个成员方法m3
public static void m3()
{ Console.WriteLine("方法3huashanlin被调用"); }
}
//另一个类
class Program
{
//该类下包含的主函数
static void Main(string[] args)
{
//实例化一个委托,并封装messges类中的一个方法m2
msg ms = new msg(messges.m2);
//在原有的封装了一个m1方法的委托实例中再封装进一个新的方法m1
ms = ms + messges.m1;
//或者上面的语句可以写成ms += messges.m1;两者的效果是一样的
//以下为该委托实例封装第三个方法
ms += messges.m3;
//调用该委托实例,那么由于多播委托之后调用该委托就要执行完此封装进去的三个方法
ms();
}
}
}
//注:deletge保存的方法签名是以hash队列的形式存在的
多播委托示例程序二:
delegate void Delegate_Multicast(int x, int y);
Class Class2
{
static void Method1(int x, int y) {
Console.WriteLine("You r in Method 1");
}
static void Method2(int x, int y) {
Console.WriteLine("You r in Method 2");
}
public static void Main()
{
Delegate_Multicast func = new Delegate_Multicast(Method1);
func += new Delegate_Multicast(Method2);
func(1,2); // Method1 and Method2 are called
func -= new Delegate_Multicast(Method1);
func(2,3); // Only Method2 is called
}
}
解析:
上面的示例程序分别定义了名为method1 和 method2的两个接受整型参数、返回类型为void的方法。
在Main函数里使用下面的声明创建委托对象:
Delegate_Multicast func = new Delegate_Multicast(Method1);
然后使用+= 来添加委托,使用-=来移除委托 作者: 许庭洲 时间: 2013-2-25 18:33
值得学习ing!