C#委托基础6——泛型委托Predicate
来源:互联网 发布:淘宝商品降权3天恢复 编辑:程序博客网 时间:2024/06/14 05:12
C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。
此委托返回一个bool值,该委托通常引用一个"判断条件函数"。需要指出的是,判断条件一般为“外部的硬性条件”,比如“大于50”,而不是由数据自身指定,不如“查找数组中最大的元素就不适合”。
例一
class Program{ bool IsGreaterThan50(int i) { if (i > 50) return true; else return false; } static void Main(string[] args) { Program p=new Program(); List<int> lstInt = new List<int>(); lstInt.Add(50); lstInt.Add(80); lstInt.Add(90); Predicate<int> pred = p.IsGreaterThan50; int i = lstInt.Find(pred); // 找到匹配的第一个元素,此处为80 Console.WriteLine("大于50的第一个元素为{0}",i); List<int> all = lstInt.FindAll(pred); for (int j = 0; j < all.Count(); j++) { Console.WriteLine("大于50的数组中元素为{0}", all[j]); // 找出所有匹配条件的 } Console.ReadLine(); }}
例二
class Staff{ private double salary; public double Salary { get { return salary; } set { salary = value; } } private string num; public string Num { get { return num; } set { num = value; } } public override string ToString() { return "Num......" + num + "......" + "......" + "Salary......" + salary; }} class Program{ bool IsSalaryGreaterThan5000(Staff s) { if (s.Salary > 5000) return true; else return false; } static void Main(string[] args) { Program p = new Program(); List<Staff> allStaff = new List<Staff> { new Staff{Num="001",Salary=9999.9}, new Staff{Num="002",Salary=8991}, new Staff{Num="003",Salary=10000.8}, new Staff{Num="004",Salary=4999.99} }; Predicate<Staff> s = p.IsSalaryGreaterThan5000; Staff theFirstOne = allStaff.Find(s); Console.WriteLine(theFirstOne); // 找出第一个 List<Staff> all = allStaff.FindAll(s); for (int i = 0; i < all.Count(); i++) { Console.WriteLine(all[i]); // 找出所有满足条件的 } Console.ReadLine(); }}
本文参考自金旭亮老师的《.NET 4.0面向对象编程漫谈》有关代理的内容
- C#委托基础6——泛型委托Predicate
- C#委托基础6——泛型委托Predicate
- C#委托基础6——泛型委托Predicate
- C#泛型委托Predicate
- C# Predicate泛型委托
- 泛型委托Predicate
- C#委托基础3——泛型委托
- C#委托基础4——泛型委托Func
- C#委托基础5——泛型委托Action
- C#委托基础3——泛型委托
- C#委托基础4——泛型委托Func
- C#委托基础5——泛型委托Action
- C#委托基础3——泛型委托
- Predicate 泛型委托认识
- 泛型委托 Predicate/Func/Action ,c#扩展方法
- C#的泛型委托Predicate/Func/Action
- C#令人惊喜的泛型委托Predicate、Func、Action
- C#编程:Predicate<T> 委托
- mapreduce流程1
- Android系统学习1
- eclipse 快捷键
- hibernate修改数据变插入
- Mybatis哲学
- C#委托基础6——泛型委托Predicate
- mapreduce流程2
- 各种距离
- 341. One eyewitness is better than ten hearsays.百闻不如一见
- MAPREDUCE流程3
- ZOJ 3675 Trim the Nails 小水题
- 生活,只愿平静
- SQL由入门到精通的学习
- 一个不错的arm资料下载网站