到底什么是 "method group"

时间:2020-12-24 21:09:08
    class Program
    {
        delegate void NoParam();
        delegate void WithOneParam(string name);
        static void Main(string[] args)
        {
            /*
             * Test在这里就叫做"方法组"
             *
             * 之所以叫"方法组",是因为方法有重载,
             * 可以看到,Test()方法有两个, 一种没参数,一种有一个参数
             * 当我们把 Test 赋值给委托时,会自动转换为具有兼容签名的任意委托类型
             * 所以可以像下面这样赋值.
             *
             */

            NoParam de1 = Test;
            WithOneParam de2 = Test;
            de1();
            de2("wjire");
            Console.ReadKey();
        }

        static void Test()
        {
            Console.WriteLine("no param");
        }

        static void Test(string name)
        {
            Console.WriteLine("one param");
        }
    }