delegate Func Action Expression

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

namespace ConsoleApp3
{
    static class Program
    {
        delegate string delagateA(string paramA);

        static void Main(string[] args)
        {
            delagateA delagatea = (a) =>
            {
                return "delegate方式输出:" + a;
            };
            Console.WriteLine(delagatea("123"));

            Func<int, int, int> funcA = (paramA, paramB) => paramA + paramB;
            Console.WriteLine("Func方式输出:"+funcA(2, 3));

            Func<int, int, int> funcB = (paramA, paramB) =>
            {
                int a = paramA + paramB;
                return a;
            };
            Console.WriteLine("Func方式输出:" + funcB(2, 3));

            Action<int, int> actionA = (paramA, paramB) => Console.WriteLine("Action方式输出:" + paramA + paramB);
            actionA(3, 5);

            Expression<Action<int>> expressionA = paramA => Console.WriteLine("Expression方式输出:" + paramA);
            expressionA.Compile()(1);


            Expression<Func<int, int>> expressionB = paramA => paramA;
            Console.WriteLine("Expression方式输出:" + expressionB.Compile()(1));

            myFun("chenyishi", c =>
            {
                return c;
            });
        }

        static void myFun(string str, Func<string, string> func)
        {
            Console.WriteLine("Func作为参数方式输出:"+func(str));
        }

    }
}
原文地址:https://www.cnblogs.com/chenyishi/p/8329434.html