bloodycool
I will grow through this pain load i'm doing all i can to be a better man.

C#中的委托是非常重要的机制,用来建立我们对象间的交互。什么是委托呢?你可能这么问。非常好的问题。一个委托指向一个方法。这是什么意思呢?就像你通过引用来传递一个变量,你可以传递一个引用到一个方法。让我们来做一个例子:
我们有一个类,其中有两个方法,这两个方法有着一样的签名(一样的返回类型和一样的参数配置)
public class MyObject
    {
        public int Add(int param1, int param2)
        {
            return param1 + param2;
        }
        public int Multiply(int param1, int param2)
        {
            return param1 * param2;
        }
    }
我们可以利用下面定义的委托来指向其中任何一个方法

public delegate int MyMethodDelegate(int param1, int param2);
现在,如果我们有另一个类,想要运行MYOBJECT类中的任意一个方法,我们可以通过下边类中“DO()”方法中委托。我们可以传递任何拥有一样签名的方法(该方法不一定要在MYOBJECT中)。比如
MySecondObject.Subtract() 方法。 

public class MySecondObject

     {

          MyObject obj;

          int a, b;

 

          public MySecondObject()

          {

               a=4;

               b=5;

               obj = new MyObject();

          }

 

          public int Do(string pMethod)

          {

               MyMethodDelegate del = null;

 

               switch(pMethod)

               {

                    case"Add":

                         del = new MyMethodDelegate(obj.Add);

                         break;

                    case"Multiply":

                         del = new MyMethodDelegate(obj.Multiply);

                         break;

                    case "Subtract":

                         del = new MyMethodDelegate(this.Subtract);

                         break;

               }

 

               if(null == del) throw new Exception("Not a valid call");

               

               return del(a,b);

          }

 

          public int Subtract(int param1, int param2)

          {

               return param1 - param2;

          }

     } 

希望这篇文章可以带给你一个比较好的启发和了解委托这如果开发的。
 
翻译:JACKY DING
原文:http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_delegates01032006110300AM/csharp_delegates.aspx?ArticleID=eebb26b2-4f05-421a-9493-c07d0afc558f

posted on 2006-01-10 14:39  风吹河岸柳轻扬  阅读(868)  评论(0)    收藏  举报