• 委托转换,委托重载



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
        delegate void MyAction();
        delegate void MyAction<T>(T obj);
        delegate void MyAction<T1, T2>(T1 who, T2 say);

        delegate string MyFunc();
        delegate T MyFunc<T>();
        delegate TResult MyFunc<T, TResult>(T give);
        delegate TResult MyFunc<T1, T2, TResult>(T1 give, T2 n);
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Action------------------");
                Action a = () => { Console.WriteLine("hello"); };
                a.Invoke();

                Action<string> b = x => { Console.WriteLine(x); };
                b("hi");

                Action<string, string> c = (x, y) => Console.WriteLine(x + " say " + y);
                c("Mr.Du", "Hello");

                Console.WriteLine("MyAction------------------");

                MyAction a1 = a.Method.CreateDelegate(typeof(MyAction)) as MyAction;
                a1();

                MyAction<string> b1 = b.Method.CreateDelegate(typeof(MyAction<string>)) as MyAction<string>;
                b1("hi1");

                MyAction<string, string> c1 = c.Method.CreateDelegate(typeof(MyAction<string, string>)) as MyAction<string, string>;
                c1("Mr.Du", "Hello1");


                Console.WriteLine("Func------------------");

                Func<string> f1 = () => { return "f1"; };
                Console.WriteLine(f1());

                Func<string, string> f2 = x => { return x + x; };
                string give = "a";
                Console.WriteLine(f2(give) + " get of " + give);

                Func<string, int, string> f3 = (x, n) =>
                {
                    for (int i = 0; i < n; i++)
                    {
                        x += x;
                    }
                    return x;
                };
                Console.WriteLine(f3(give, 3) + " get of " + give);


                Console.WriteLine("MyFunc------------------");

                MyFunc mf1 = f1.Method.CreateDelegate(typeof(MyFunc)) as MyFunc;
                Console.WriteLine(mf1());

                MyFunc<string> mf2 = f1.Method.CreateDelegate(typeof(MyFunc<string>)) as MyFunc<string>;
                Console.WriteLine(mf2());

                MyFunc<string, string> mf3 = f2.Method.CreateDelegate(typeof(MyFunc<string, string>)) as MyFunc<string, string>;
                Console.WriteLine(mf3(give) + " get of " + give);

                MyFunc<string, int, string> mf4 = f3.Method.CreateDelegate(typeof(MyFunc<string, int, string>)) as MyFunc<string, int, string>;
                Console.WriteLine(mf4(give,3) + " get of " + give);
            }
        }
    }

  • 相关阅读:
    mysql获取当前时间,及其相关操作
    notepad++ 样式随我变!
    MySQL索引的创建、删除和查看
    so easy 的弹出层——使用jquery
    mysql获取当前时间,及其相关操作
    侯捷大师畅谈技术人生与读书感悟
    《海量数据库解决方案》之聚簇表的代价
    博文视点大讲堂第44期——招聘真相全揭秘 圆满结束
    程序员修炼道路上的“葵花宝典”——博文视点大讲堂42期快乐结束
    众专家推荐
  • 原文地址:https://www.cnblogs.com/cppss/p/3950930.html
Copyright © 2020-2023  润新知