Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET深入浅出系列4- 也谈委托和事件

ASP.NET深入浅出系列4- 也谈委托和事件2012-01-18一、委托的定义:

《高级汉语大词典》中是如下解释的:托付给别的人或机构办理。要说生活中的意思其实大家都能理解,无非是“当某人(机构)需要完成一件自己不能或不应该完成的事情的时候,此人(机构)物色一个合适的且有能力完成此事的人选,然后提供必要的信息,将此事委托给物色到的人(机构)来完成。” C#中的委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为,委托方法的使用可以像其他任何方法一样具有参数和返回值。委托对象能被传递给调用该方法引用的代码而无须知道哪个方法将在编译时被调用。委托是函数的封装,它代表一“类”函数。他们都符合一定的签名:拥有相同的参数列表、返回值类型。同时委托也可以看作是对函数的抽象,是函数的“类”。此时,委托实例代表一个具体的函数。委托应该和类同属一个层面,使用起来也很象一个类。我们先来看一个委托使用的实例:

public delegate void PrintHandler(string str);  // 声明委托类型    public class PrintStr  {           public void CallPrint(string input)    {      Console.WriteLine(input);    }      }static void Main(string[] args){      PrintStr myPrinter = new PrintStr();      PrintHandler myHandler = null;      // 将委托链接到方法,来实例化委托      myHandler += new PrintHandler(myPrinter.CallPrint);        if (myHandler != null)        myHandler("Hello World!");  // 调用委托,相当于匿名调用委托所链接的方法      myHandler -= new PrintHandler(myPrinter.CallPrint);      if (myHandler == null)        Console.WriteLine("myHandler==null");      Console.Read();}
得到的结果为

Hello World!

myHandler==null