Func是一个.Net内置的委托。
Func<Result>,Func<T1,Result>是一个.Net内置的泛型委托。
它有5种形式,只是参数个数不同;第一个是无参数,但是有返回值;
下面是一个简单的普通委托来传方法的示例。
        private delegate string Say();
        public static string SayHello()
        {
            return "Hello";
        }
        static void Main(string[] args)
        {
            Say say = SayHello;
            Console.WriteLine(say());
            Console.ReadKey();
        }
所以,在有时候,我们不知道一个接口同时要做什么操作的时候,我可以给它留一个委托。
为了更方便,.Net直接默认有了委托。我们再来试试.Net默认带的委托。
        public static string SayHello()
        {
            return "Hello";
        }
        static void Main(string[] args)
        {
            Func<string> say = SayHello;
            Console.WriteLine(say());
            Console.ReadKey();
        }
如果需要参数的,还可以这样传一份。
        public static string SayHello(string str)
        {
            return str + str;
        }
        static void Main(string[] args)
        {
            Func<string, string> say = SayHello;
            string str = say("abc");    
            Console.WriteLine(str);     //输出abcabc
            Console.ReadKey();
        }
Action<T>的用法与Func几乎一样,调用方法也类似。
        private delegate string Say();
        public static void SayHello(string str)
        {
            Console.WriteLine(str);
        }
        static void Main(string[] args)
        {
            Action<string> say = SayHello;
            say("abc");
            Console.ReadKey();
        }
Func与Action作用几乎一样。只是
还是以一个输入后,返回重复一次的值作为示例。
Func<string, string> say = m => m + m;
Console.WriteLine(say("abc"));    //输出abcabc
原文:http://www.cnblogs.com/kissdodog/p/5674629.html