Обобщенные подпрограммы в качестве параметров

Обобщенная подпрограмма может выступать в качестве формального параметра другой обобщенной подпрограммы.

Например, в классе System.Array имеется несколько статических обобщенных методов с обобщенными подпрограммами в качестве параметров. Так, System.Array.FindAll имеет следующий прототип:

System.Array.FindAll<T>(a: array of T; pred: Predicate<T>): array of T;

и возвращает подмассив массива a элементов T, удовлетворяющих условию pred.

Приведем пример вызова этой функции:

var a := [1,3,6,5,8];
var b := System.Array.FindAll(a,x -> x mod 2 = 0);

Здесь возвращается массив b, содержащий все четные значения массива a в том же порядке.