2009-11-10 2 views
4

Когда массив Дано:Func <> Делегат - Разъяснение

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; }; 

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

ответ

11
int[] q = Array.FindAll<int>(a, delegate(int p) { return p % 2 == 0; }); 

(заметьте это использует Predicate<int>, который является таким же, как подпись Func<int,bool>)

+1

+1 Я забыл об этом методе. – Noldorin

4

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

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

Array.FindAll<int>(a, func); 
Смежные вопросы