关于Predicate<T>委托
来源:互联网 发布:java中传输的中文乱码 编辑:程序博客网 时间:2024/06/10 14:10
关于Predicate委托
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(); } }}
- 关于Predicate<T>委托
- 关于Predicate<T>委托
- Predicate<T> 委托
- System.Predicate<T> 委托
- C#编程:Predicate<T> 委托
- 匿名委托 Invoke,Predicate<T> 委托
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- 【基础】C#:委托Action、Action<T>、Func<T>、Predicate<T>
- 泛型委托Comparison<in T>和Predicate<in T>
- Predicate委托
- C# Action<T>、Func<T>、Predicate<T>委托的区别、用法
- 泛型委托Predicate
- 委托C#(delegate、Action、Func、predicate,Predicate)
- Predicate 泛型委托认识
- C#泛型委托Predicate
- C# Predicate泛型委托
- C#中的Predicate 理解 及 delegate 委托
- Android开发环境搭建
- 关于软件设计文档
- S5PV210 显示控制器及framebuffer驱动s3c-fb.c中probe函数分析
- oracle查询/子查询/复制表和数据
- Ext 修改 store 数据
- 关于Predicate<T>委托
- 【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 3 - 使用缓存来避免重复的下载]
- 禅道程序员的10条原则【时刻提醒自己】
- unix 高级I/O详解
- 编译modis 出现 LINK : fatal error LNK1104: 无法打开文件“XXX.lib"
- 委托
- Android 多线程编程(整理)
- IResource.isSynchronized(int depth)_用法
- 【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 4 - 根据网络类型更改下载模式]