int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
Action<int[]> action = show;
show(numbers);
public static void show(int [] intArray){
foreach (int i in intArray)
{
Console.WriteLine(i);
}
}
对于函数返回值为空的情形,可以使用Action泛型委托
Demo1:数组元素/2;
//method1:使用匿名方法
//Func<int, double> func = delegate(int x)
//{
// return x / 2.0;
//};
//method2:Lambda.
Func<int, double> func = x => x / 2.0;
int[] ints = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
IEnumerable<double> items = ints.Select(func);
foreach (double d in items)
{
Console.WriteLine(d);
}
Demo2:数组元素转换成大写
Func<string, string> func = delegate(string x)
{
return x.ToUpper();
};
string[] strs = { "one", "two", "three" };
//使用了匿名对象
var items = strs.Select<string,string>(func);
foreach (var i in items)
{
Console.WriteLine(i);
}
Demo3: 将demo2改写成匿名方法
string[] strs = { "one", "two", "three" };
var items = strs.Select<string,string>(delegate(string x)
{
return x.ToUpper();
});
foreach (var i in items)
{
Console.WriteLine(i);
}
Demo4:将Demo2改写成Lambda表达式
string[] strs = { "one", "two", "three" };
//lambda表达式
var items = strs.Select(str => str.ToUpper());
foreach (var i in items)
{
Console.WriteLine(i);
}
List<int> list = new List<int>();
list.Add(0);
list.Add(1);
list.Add(10);
list.Add(3);
list.Add(13);
//method1:匿名方法
//Predicate<int> pred = delegate(int x)
//{
// return x > 5 ? true : false;
//};
//method2:Lambda
Predicate<int> pred = x =>
{
return x > 5 ? true : false;
};
int num = list.Find(pred);
System.Console.WriteLine(num);
int index = list.FindIndex(pred);
System.Console.WriteLine("index=" + index);
List<int> all = list.FindAll(pred);
foreach (int i in all)
{
Console.WriteLine(i);
}