Func <> делегат - разъяснение - PullRequest
4 голосов
/ 10 ноября 2009

Когда указан массив:

int[] a={1,3,4,5,67,8,899,56,12,33}

и если я хочу вернуть четные числа, используя LINQ

var q=a.where(p=>p%2==0)

Если бы мне пришлось использовать C # 2.0 и строго func <> делегировать, как это решить?

Я пытался:

Func<int, bool> func = delegate(int val) { return val % 2 == 0; };

но я запутался, как связать массив "a" здесь.

Ответы [ 2 ]

11 голосов
/ 10 ноября 2009
int[] q = Array.FindAll<int>(a, delegate(int p) { return p % 2 == 0; });

(обратите внимание, что используется Predicate<int>, что совпадает с Func<int,bool>)

4 голосов
/ 10 ноября 2009

Вы можете использовать Predicate и Array.FindAll.

Predicate<int> func = delegate(int val) { return val % 2 == 0; };

Array.FindAll<int>(a, func);
...