C#委托 delegate
public delegate string MyMethodDelegate(int myInt);
public class MySimpleClass
{
public string MyStringMethod(int myInt)
{
if (myInt > 0) return "positive";
if (myInt < 0) return "negative";
return "Zero";
}
public string MySignMethod(int myInt)
{
if (myInt > 0) return "+";
if (myInt < 0) return "-";
return "";
}
}
class Program
{
static void Main(string[] args)
{
MySimpleClass mc = new MySimpleClass();
MyMethodDelegate mmd1 = new MyMethodDelegate(mc.MyStringMethod);
MyMethodDelegate mmd2 = new MyMethodDelegate(mc.MySignMethod);
Console.WriteLine("{0} is {1}; use sign {2}", 0, mmd1(0), mmd2(0));
Console.WriteLine("{0} is {1}; use sign {2}", 6, mmd1(6), mmd2(6));
Console.WriteLine("{0} is {1}; use sign {2}", -9, mmd1(-9), mmd2(-9));
Console.ReadLine();
}
}
在需要取得返回值的类里面,声明一个跟目标的方法一样的委托方法,参数以及返回值都相同,在使用以后,直接取得目标方法的返回值,而不用去目标类里面实现 然后在取得属性。
就好比在自己家挖个坑,让别人家的长工来这个坑里干活,用的是他们家的锹,他们家的镐,生产出来的瓦片给自己用。用委托,不需要实例化对象类,不需要调用对象的方法,只要在自己的类中声明,调用一下,就OK了。