泛型(Generic)委托

泛型委托我们之前已经用过很多了,泛型委托经常和lamuda表达式一起使用组成LINQ查询
Action<>无返回值

    class Program
    {
        static void Main(string[] args)
        {
            Action<string> action1 = new Action<string>(Say);
            action1.Invoke("Abe");
            Action<int> action2 = Mui;
            action2(1);
        }

        static void Say(string str)
        {
            Console.WriteLine($"Hello,{str}!");
        }
        static void Mui(int x)
        {
            Console.WriteLine(x * 100);
        }
    }

Func<>有返回值

    class Program
    {
        static void Main(string[] args)
        {
            Func<int, int, int> func1 = new Func<int, int, int>(Add);
            Func<double, double, double> func2 = new Func<double, double, double>(Add);
            var result1 = func1(100, 100);
            var result2 = func2(100.1, 100.2);
            Console.WriteLine(result1);
            Console.WriteLine(result2);
        }

        static int Add(int a, int b)
        {
            return a + b;
        }

        static double Add(double a, double b)
        {
            return a + b;
        }
    }


z
lambda表达式与泛型委托的结合:

    class Program
    {
        static void Main(string[] args)
        {
            Func<int, int, int> func1 = new Func<int, int, int>((a, b) => {return a + b; });
            Func<double, double, double> func2 = new Func<double, double, double>((a, b) => { return a + b; });
            var result1 = func1(100, 100);
            var result2 = func2(100.1, 100.2);
            Console.WriteLine(result1);
            Console.WriteLine(result2);
        }
    }

把函数

        static int Add(int a, int b)
        {
            return a + b;
        }

(a, b) => {return a + b; }


表示,a,b的类型呢是由泛型Func<参数类型,参数类型,返回值类型>来限定

posted @ 2019-10-11 14:09  卯毛  阅读(101)  评论(0编辑  收藏  举报