Predicate 泛型委托
此委托在 .NET Framework 2.0 版中是新增的。
表示定义一组条件并确定指定对象是否符合这些条件的方法.
此委托由 Array和 List类的几种方法使用,用于在集合中搜索元素。
下面的代码示例使用带有 Array.Find 方法的 Predicate 委托搜索 Point 结构的数组。如果 X 和 Y 字段的乘积大于 100,000,此委托表示的方法 ProductGT10 将返回 true。Find 方法为数组的每个元素调用此委托,在符合测试条件的第一个点处停止。
using System;
using System.Drawing;
![]()
public class Example
{
public static void Main()
{
// Create an array of five Point structures.
Point[] points = { new Point(100, 200),
new Point(150, 250), new Point(250, 375),
new Point(275, 395), new Point(295, 450) };
![]()
// To find the first Point structure for which X times Y
// is greater than 100000, pass the array and a delegate
// that represents the ProductGT10 method to the Shared
// Find method of the Array class.
Point first = Array.Find(points, ProductGT10);
![]()
// Note that you do not need to create the delegate
// explicitly, or to specify the type parameter of the
// generic method, because the C# compiler has enough
// context to determine that information for you.
![]()
// Display the first structure found.
Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
}
![]()
// This method implements the test condition for the Find
// method.
private static bool ProductGT10(Point p)
{
if (p.X * p.Y > 100000)
{
return true;
}
else
{
return false;
}
}
}
![]()
/* This code example produces the following output:
![]()
Found: X = 275, Y = 395
*/
Code
Web Hosting By Brinkster
表示定义一组条件并确定指定对象是否符合这些条件的方法.
public delegate bool Predicate<T>
(
T obj
)
//T 代表要比较的对象的类型
下面的代码示例使用带有 Array.Find 方法的 Predicate 委托搜索 Point 结构的数组。如果 X 和 Y 字段的乘积大于 100,000,此委托表示的方法 ProductGT10 将返回 true。Find 方法为数组的每个元素调用此委托,在符合测试条件的第一个点处停止。
Visual Basic 和 C# 用户不需要显式创建委托,也不需要指定泛型方法的类型参数。编译器会根据您提供的方法参数确定必需的类型。














































=========================

提供免费空间的空间商:
Web Hosting By Brinkster