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);
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");
}
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
浙公网安备 33010602011771号