# Predicate<T>Predicate<T>Predicate<T>Predicate<T> Delegate

## 定義

``````generic <typename T>
public delegate bool Predicate(T obj);``````
``public delegate bool Predicate<in T>(T obj);``
``type Predicate<'T> = delegate of 'T -> bool``
``Public Delegate Function Predicate(Of In T)(obj As T) As Boolean ``

T

#### パラメーター

obj

このデリゲートで表されるメソッド内で定義された基準と照らし合わせて比較するオブジェクト。The object to compare against the criteria defined within the method represented by this delegate.

#### 戻り値

System.Boolean

このデリゲートで表されるメソッド内で定義された基準を `obj` が満たしている場合は `true`。それ以外の場合は `false``true` if `obj` meets the criteria defined within the method represented by this delegate; otherwise, `false`.

Predicate<T>Predicate<T>Predicate<T>Predicate<T>

## 例

``````using System;
using System.Drawing;

public class Example
{
public static void Main()
{
// Create an array of Point structures.
Point[] points = { new Point(100, 200),
new Point(150, 250), new Point(250, 375),
new Point(275, 395), new Point(295, 450) };

// Define the Predicate<T> delegate.
Predicate<Point> predicate = FindPoints;

// Find the first Point structure for which X times Y
// is greater than 100000.
Point first = Array.Find(points, predicate);

// Display the first structure found.
Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
}

private static bool FindPoints(Point obj)
{
return obj.X * obj.Y > 100000;
}
}
// The example displays the following output:
//        Found: X = 275, Y = 395
``````
``````Imports System.Drawing

Public Class Example
Public Shared Sub Main()

' Create an array of Point structures.
Dim points() As Point = { new Point(100, 200), new Point(150, 250),
new Point(250, 375), new Point(275, 395),
new Point(295, 450) }

' Define the Predicate(Of T) delegate.
Dim predicate As Predicate(Of Point) = AddressOf Example.FindPoints

' Find the first Point structure for which X times Y
' is greater than 100000.
Dim first As Point = Array.Find(points, predicate)

' Display the first structure found.
Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y)
End Sub

Private Shared Function FindPoints(obj As Point) As Boolean
Return obj.X * obj.Y > 100000
End Function

End Class
' The example displays the following output:
'       Found: X = 275, Y = 395
``````

``````using System;
using System.Drawing;

public class Example
{
public static void Main()
{
// Create an array of Point structures.
Point[] points = { new Point(100, 200),
new Point(150, 250), new Point(250, 375),
new Point(275, 395), new Point(295, 450) };

// Find the first Point structure for which X times Y
// is greater than 100000.
Point first = Array.Find(points, x => x.X * x.Y > 100000 );

// Display the first structure found.
Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
}
}
// The example displays the following output:
//        Found: X = 275, Y = 395
``````
``````Imports System.Drawing

Public Class Example
Public Shared Sub Main()

' Create an array of Point structures.
Dim points() As Point = { new Point(100, 200), new Point(150, 250),
new Point(250, 375), new Point(275, 395),
new Point(295, 450) }

' Find the first Point structure for which X times Y
' is greater than 100000.
Dim first As Point = Array.Find(points,
Function(x) x.X * x.Y > 100000 )

' Display the first structure found.
Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y)
End Sub
End Class
' The example displays the following output:
'       Found: X = 275, Y = 395
``````

## 注釈

このデリゲートがいくつかの方法で使用される、ArrayList<T>コレクション内の要素を検索するクラス。This delegate is used by several methods of the Array and List<T> classes to search for elements in the collection.

``````using System;
using System.Collections.Generic;

public class HockeyTeam
{
private string _name;
private int _founded;

public HockeyTeam(string name, int year)
{
_name = name;
_founded = year;
}

public string Name {
get { return _name; }
}

public int Founded {
get { return _founded; }
}
}

public class Example
{
public static void Main()
{
Random rnd = new Random();
List<HockeyTeam> teams = new List<HockeyTeam>();
teams.AddRange( new HockeyTeam[] { new HockeyTeam("Detroit Red Wings", 1926),
new HockeyTeam("Chicago Blackhawks", 1926),
new HockeyTeam("San Jose Sharks", 1991),
new HockeyTeam("St. Louis Blues", 1967) } );
int[] years = { 1920, 1930, 1980, 2000 };
int foundedBeforeYear = years[rnd.Next(0, years.Length)];
Console.WriteLine("Teams founded before {0}:", foundedBeforeYear);
foreach (var team in teams.FindAll( x => x.Founded <= foundedBeforeYear))
Console.WriteLine("{0}: {1}", team.Name, team.Founded);
}
}
// The example displays output similar to the following:
//       Teams founded before 1930:
//       Detroit Red Wings: 1926
//       Chicago Blackhawks: 1926
``````
``````Imports System.Collections.Generic

Public Class HockeyTeam
Private _name As String
Private _founded As Integer

Public Sub New(name As String, year As Integer)
_name = name
_founded = year
End Sub

Public ReadOnly Property Name As String
Get
Return _name
End Get
End Property

Public ReadOnly Property Founded As Integer
Get
Return _founded
End Get
End Property
End Class

Module Example
Public Sub Main()
Dim rnd As New Random()
Dim teams As New List(Of HockeyTeam)()
teams.AddRange( { new HockeyTeam("Detroit Red Wings", 1926),
new HockeyTeam("Chicago Blackhawks", 1926),
new HockeyTeam("San Jose Sharks", 1991),
new HockeyTeam("St. Louis Blues", 1967) } )
Dim years() As Integer = { 1920, 1930, 1980, 2000 }
Dim foundedBeforeYear As Integer = years(rnd.Next(0, years.Length))
Console.WriteLine("Teams founded before {0}:", foundedBeforeYear)
For Each team in teams.FindAll( Function(x) x.Founded <= foundedBeforeYear )
Console.WriteLine("{0}: {1}", team.Name, team.Founded)
Next
End Sub
End Module
' The example displays output similar to the following:
'       Teams founded before 1930:
'       Detroit Red Wings: 1926
'       Chicago Blackhawks: 1926