关于PredicateT委托
Predicate<T>委托在.NET类类库中经常出现,此委托的定义如下:
public delegatebool Predicate<T>(T obj);
从其定义可以看到,此委托引用一个返回bool 值的方法,在实际开发中,通常使用Predicate<T>委托变量引用一个“判断条件函数”,在判断条件函数内部书写代码表明
函数参数所引用的对象应满足的条件,条件满足时,函数返回true.
在类库中,List<T> 里面的 Find方法, 定义如下:
public T Find(Predicate<T> match);
那么我们可以在外部定义一个查找的规则方法。见以下示例代码:
![](/assets/blank.gif)
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(); } }}
![](/assets/blank.gif)
关于PredicateT委托相关推荐
- c# 带返回值的action_C#委托Action、ActionT、FuncT、PredicateT
一.Action Action封装的方法没有参数也没有返回值,声明原型为: 1 public delegate void Action(); 用法如下: 1 public void Alert() 2 ...
- C#委托Action、ActionT、FuncT、PredicateT
CLR环境中给我们内置了几个常用委托Action. Action<T>.Func<T>.Predicate<T>,一般我们要用到委托的时候,尽量不要自己再定义一 个 ...
- c#委托与事件(二)
这篇博客是在上篇的基础开始讲述了一下委托的一些用法,首先我举一个例子说明了一下前面章节的知识点,接下来我说了将方法作为参数传递的一个案例,接下来实现了一个委托实现冒泡排序的方法,如果你们和我一样正在学 ...
- RanceQuest2_从委托到Lambda_会用(递归数学函数)
二连发 使用Lambda表达式编写递归函数 --摘自老赵点滴 - 追求编程之美. todo用手敲30遍,搞定--泛型委托,Lambda表达式,简单的数学递归. 遗憾的是,原本希望更进一步做出一个通用的 ...
- 利用委托和泛型实现树的常用操作
在日常开发中,经常遇到对树的操作,我们可以利用泛型和委托对这些树进行操作,这样就不需要每有一个树就要实现相应的功能了. 源码在http://files.cnblogs.com/haiconc/Lang ...
- 理解委托(delegate)及为什么要使用委托
委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来比较难,举个生活中的例子: 某人有三子,让他们各 ...
- dom元素滚动条高度 js_DOM 事件与事件委托
点击事件 <div class = 爷爷><div class = 爸爸><div class = 儿子>文字</div></div> &l ...
- C#编码实践:使用委托和特性调用指定函数
2019独角兽企业重金招聘Python工程师标准>>> 建立一个C#控制台应用程序AttributeTest. 建立一个类Operations,代码如下: namespace Att ...
- 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包
0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...
最新文章
- java major version: 51,Unsupported major.minor version 51.0的原因与解决办法
- 两台xenserver 同一个vlan中的vm 不能ping通?
- python中pillow库怎么使用_Python 图像库Pillow使用
- js中组装拼接json对象,通过java后端接收并解析
- fscanf不读取_NCNN-Breakdown(3) 读取网络的proto信息
- LeetCode学习记录(10)
- Python和C++的混合编程(使用Boost编写Python的扩展包)
- 基于SSM开发的的小区物业管理系统小程序源码
- 【计算机网络微课堂】3.3 差错检测
- 微软Excel 2007 框里打钩/打钩的方框选择
- arduino 矩阵肩膀_表情矩阵——卖萌无需多言(arduino)
- 有效解决Adobe Acrobat XI 闪退问题
- 为什么mysql的delete操作不释放磁盘空间
- MATLAB中内置的BP神经网络函数 help newff翻译【学习笔记】
- 二十五条哈佛励志金句
- 小白入职公司都是自己看,嫌弃增删改查,做了2年感觉没前途?
- 【Python中的】列表生成式和字典生成式以及内置函数
- A JSONObject text must begin with '{' at 1 [character 2 line 1]
- 千峰逆战第十二天---mvc,JSTL
- dz云服务器配置,买了云服务器怎么安装dz论坛
热门文章
- apache2 安装时报错 ServerRoot must be a valid directory
- Nginx开启访问日志记录
- win10新建管理员账户_电脑技巧|Win10家庭版如何开启超级管理员账户
- Android Studio生成函数注释
- win10安装Visual Studio Code(VSCode)
- python重写和重载的区别_Java 重写(Override)与重载(Overload)
- chart控件做实时曲线显示_Spark+Kafka+WebSocket+eCharts实时分析-完全记录(5)
- 第一台电子计算机于1846年诞生,全国2010年1月高等教育自学考试计算机与网络技术基础试题.doc...
- 中学计算机课程课时,初中信息技术基础教案设计(课时).doc
- 最大尺寸分辨率_LG UltraFine 4K显示器重上架苹果商店:尺寸变大,但降为UHD