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了。

原文地址:https://www.cnblogs.com/luxx/p/1712645.html