C# 的三种泛型委托

C# 有三种常用的泛型委托,声明形式如下

  1. Action<T1,T2.T3…>
  2. Fun<T1,T2,T3...Tresult>
  3. Predicate<T>

第一种委托表示拥有n个参数,无返回值,如:

        static void Main(string[] args)
        {
            Action<string, string> converstation;
            converstation = Conversation;
            converstation.Invoke("路飞","我是要成为海贼王的男人");
            converstation.Invoke("鸣人", "我是要成为火影的男人");
        }

        static void Conversation(string name, string word)
        {
            Console.WriteLine(string.Format("{0}:{1}。",name,word));
        }    

第二种委托表示拥有n个参数,返回值为类型为TResult,如:

        static void Main(string[] args)
        {
            Func<string, string,string> converstation;
            converstation = Conversation;
            var word1 = converstation.Invoke("路飞","我是要成为海贼王的男人");
            var word2 = converstation.Invoke("鸣人", "我是要成为火影的男人");
            Console.WriteLine(word1);
            Console.WriteLine(word2);
        }

        static string Conversation(string name, string word)
        {
            return string.Format("{0}:{1}。",name,word);
        }    

第三种表示拥有一个参数,有一个bool返回值,如:

        static void Main(string[] args)
        {
            Predicate<string> isMan;
            isMan = IsMan;
            //var result1 = isMan.Invoke("路飞");
            //var result2 = isMan.Invoke("鸣人");
            Console.WriteLine("路飞是男人吗?");
            string result1 =  isMan.Invoke("路飞") ? "是!": "不是!";
            Console.WriteLine(result1);
            Console.WriteLine("鸣人是男人嘛?");
            string result2 = isMan.Invoke("鸣人") ? "是!" : "不是!";
            Console.WriteLine(result2);
        }

        static bool IsMan(string name)
        {
            return false;
        }

以上就是三种常用的委托了。