C# 有三种常用的泛型委托,声明形式如下
- Action<T1,T2.T3…>
- Fun<T1,T2,T3...Tresult>
- 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; }
以上就是三种常用的委托了。