标签:
首先要知道委托是什么,委托实际上就相当于C语言中的函数指针
一 声明委托
示例:delegate void StringProcessor(string input);
这是一个返回值为空的委托声明,其中声明的参数必须是string 类型,同时比较写出返回类型(这个类型必须与委托指向的方法的返回值的类型一致);
二 创建委托示例
示例 :
jonProcessor = new StringProcessor(jon.Say);
tomProcessor = new StringProcessor(tom.Say);
backgroung = new StringProcessor(Background.Note);
如果委托操作的是静态方法,直接操作就行了,如果委托操作的实例的方法则必须先创建该方法所在的实例
(注:假如委托实例本身不能被收回,委托实例会阻止它的目标被作为垃圾回收,这可能造成明显的内存泄露(leak))
三 调用委托
示例:
void Invke(string input);
只需要传入方法原版需要的参数就可以调用委托实例
四 完整的例子
using System; namespace ConsoleApplication1 { delegate void StringProcessor(string input); class Perosn { string name; public Perosn(string name) { this.name = name; } public void Say( string message) { Console.WriteLine("{0} says: {1}",name,message); } } class Background { public static void Note(string note) { Console.WriteLine("({0})", note); } } class Program { static void Main(string[] args) { Perosn jon = new Perosn("Json"); Perosn tom = new Perosn("Tom"); StringProcessor jonProcessor, tomProcessor, backgroung; jonProcessor = new StringProcessor(jon.Say); tomProcessor = new StringProcessor(tom.Say); backgroung = new StringProcessor(Background.Note); jonProcessor("Hi!son!"); tomProcessor.Invoke("Hi!Daddy"); backgroung("An airplane flies past!"); } } }
标签:
原文地址:http://www.cnblogs.com/NEAVERS/p/4319459.html