public class Test
{
//申明委托
public delegate List<int> SelectDelegate(List<int> aList, int threshold);
public List<int> Select(List<int> aList, int threshold) {
List<int> ret = new List<int>();
foreach (var i in aList)
{
if (i > threshold)
{
ret.Add(i);
}
}
return ret;
}
public void DelegateTest() {
var list = new List<int>();
//Add numbers from -5 to 4
list.AddRange(Enumerable.Range(-5, 10));
//2.Initialize delegate, now delegate points to function 'Predicate'
SelectDelegate sd =new SelectDelegate(Select);//方式一
SelectDelegate sd1 = Select;//方式二
SelectDelegate sd2 = (a, b) => { return Select(a, b); };//方式二
//3.Invoke
list = sd.Invoke(list, 1);
//Only member > 1 are selected
Console.WriteLine("Now list has {0} members.", list.Count);
}
}