您的位置:首页 > 编程语言 > C#

C#中的delegate(代理/委托),简介说明(zz)

2007-09-19 21:28 609 查看
c# 中,取消了c和c++中使用最灵活,也是最难掌握的指针。那么在C#中如何提供c/C++中的函数指针的功能?c#提供了委托(delegate),委托是继承自System.Delegate类的引用类型。它相当于函数指针原型。与函数指针不同的是,委托在C#中是类型安全的,委托特别适合于匿名调用。要使用委托需经过三个步骤,即声明、实例化、调用。


using System;


//声明一个名为mfDelegate的委托,该委托有一个string类型的参数


//C#编译器编译时会产生一个新类,该类继承自System.Delegate,类


//名为mfDelegate


public delegate void mfDelegate(string name);




public class MikeCat




...{


//定义与mfDelegate有相同参数类型的方法Hello()


public static void Hello(string name)




...{


Console.WriteLine("您好,{0}!",name);


}


//定义与mfDelegate有相同参数类型的方法GoodBye()


public static void GoodBye(string name)




...{


Console.WriteLine("再见,{0}!",name);


}


public static void Main()




...{


//创建一个mfDelegate实例 mf1


mfDelegate mf1=new mfDelegate(Hello);


//调用mf1


mf1("mikecat");


mfDelegate mf2=new mfDelegate(GoodBye);


mf2("mikecat");


//将mf1 mf2组合成一个新的委托mf3


mfDelegate mf3=mf1+mf2;


//调用mf3


mf3("迈克老猫");


//从组合的委托mf3中删除mf1


mfDelegate mf4=mf3-mf1;


mf4("mikecat");


}


}

程序结果:
您好,mikecat!//mf1; 再见,mikecat!//mf2
您好,迈克老猫! 再见,迈克老猫!//mf3
再见,mikecat!//mf4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: