在程序开发里,有一种很常见的思想,叫委托,顾名思义就是A委托B做A想做的事情,具体实现就是A定义好函数(实现A想做的),然后把该函数以一种特殊的形式告知B,B来调用,在.Net里,这种特殊形式的实现方式有三种,delegate,Action和Func,下面逐一说明用法,
string Translate(string str)
{
return str.ToUpper();
}
delegate string Delegate(string str);
void Function()
{
}
void main()
{
// delegate
Delegate del = Translate;del("haha");
// Action
Action action = Function;action("haha");
// Func
Func<string, string> func = Translate;
func("haha");
}
从以上用法中,可以看出定义好的函数可以处理成引用,有了引用自然就可以通过传参告知委托对象;
那么,以上三种形式有什么区别呢,delegate是C#的关键字,而Action和Func都是基于delegate的特殊用法,Action的返回值类型是void,Func通过泛型可以自定义返回值类型,但型参只能有一种,最后写一个用lambda表达式定义Func的方法,
Func<string, string> func = x => x.ToUpper();
谢谢!