关于Predicate<T>委托
2015-09-21 16:59
363 查看
http://www.cnblogs.com/eagle1986/archive/2012/01/19/2327351.html
Predicate<T>委托在.NET类类库中经常出现,此委托的定义如下:
public delegatebool Predicate<T>(T obj);
从其定义可以看到,此委托引用一个返回bool 值的方法,在实际开发中,通常使用Predicate<T>委托变量引用一个“判断条件函数”,在判断条件函数内部书写代码表明
函数参数所引用的对象应满足的条件,条件满足时,函数返回true.
在类库中,List<T> 里面的 Find方法, 定义如下:
public T Find(Predicate<T> match);
那么我们可以在外部定义一个查找的规则方法。见以下示例代码:
Predicate<T>委托在.NET类类库中经常出现,此委托的定义如下:
public delegatebool Predicate<T>(T obj);
从其定义可以看到,此委托引用一个返回bool 值的方法,在实际开发中,通常使用Predicate<T>委托变量引用一个“判断条件函数”,在判断条件函数内部书写代码表明
函数参数所引用的对象应满足的条件,条件满足时,函数返回true.
在类库中,List<T> 里面的 Find方法, 定义如下:
public T Find(Predicate<T> match);
那么我们可以在外部定义一个查找的规则方法。见以下示例代码:
namespace UsePredicateDelegate { class MyClass { public int Value; public string Information; } class Program { /// <summary> /// 创建一个MyClass类型的对象集合 /// </summary> /// <returns></returns> private static List<MyClass> GetMyClassList() { List<MyClass> lst = new List<MyClass>(); Random ran = new Random(); MyClass obj = null; for (int i = 0; i < 10; i++) { obj = new MyClass { Value = ran.Next(1, 100), Information = "object" + i.ToString() }; lst.Add(obj); } return lst; } /// <summary> /// 打印一个MyClass对象集合的所有成员 /// </summary> /// <param name="lst"></param> private static void PrintList(List<MyClass> lst) { if (lst == null) return; foreach (MyClass obj in lst) Console.WriteLine("Infomation={0},Value={1}", obj.Information, obj.Value); } static bool GreaterThan50(MyClass elem) { if (elem.Value > 50) return true; return false; } static void Main(string[] args) { Predicate<MyClass> pred = GreaterThan50; List<MyClass> lst = GetMyClassList(); Console.WriteLine("生成的MyClass对象集合为:"); PrintList(lst); MyClass foundElement= lst.Find(pred); if (foundElement != null) Console.WriteLine("找到了符合条件的对象。Infomation={0},Value={1}", foundElement.Information, foundElement.Value); else Console.WriteLine("未找到符合条件的对象"); Console.ReadKey(); } } }
相关文章推荐
- 【题解】 2015 ACM/ICPC Asia Regional Beijing Online (3+2)
- javascript 基础知识-1
- 斑马问题
- 第四周上机实践项目1——建立单链表
- 第三周实践项目~建设“顺序表”算法库
- Effective C++——资源管理
- Java 获取本机的ip和主机名
- JS window对象默认窗口
- 判断JS对象是否拥有某属性
- Android开发常用工具类
- 安卓OTA升级系统解析中
- ios中运行机制三个常用机制
- 递归-快速排序quickSort
- 判断JS对象是否拥有某属性
- 判断JS对象是否拥有某属性
- [!!**!F6782A84A3BECEAADDB11DAC0C4E6346AC07E5344100738DAF4C6DA639D9081F!!**!]
- 第3周SHH数据结构—【项目2 - 建设“顺序表”算法库】
- 旋转矩阵
- 第三周实践项目1--顺序表的基本运算(2)线性表长度,查找元素
- 用elasticsearch-river-jdbc同步数据到elasticsearch