C# 委托与Linq使代码更平滑
委托(Delegate)
什么是委托? 委托是一个异步处理的过程.委托是指向一个函数的引用指针.允许把一个函数作为一个变量进行传递.
一、没有返回值的委托(.NET FCL中包含的Action委托):
1. 列举委托的一般使用方法:
委托的声明-->
public delegate void PrintOutput(string param);
委托指向的函数-->
public static void Print(string param)
{
Console.Write(param);
}
Main入口方法的使用委托-->
PrintOutput printOutput = Print; //声明了一个委托变量
printOutput ("打印一个字符串!");
2. 列举委托的匿名方法的使用方法:
委托的声明-->
public delegate void PrintOutput(string param);
// 委托指向的函数-->转化为一个delegate(param)
PrintOutput printOutput = delegate(string param)
{
Console.WriteLine(param);
};
printOutput ("打印一个字符串!");
3. 列举委托与Linq,使用linq替代函数与匿名函数使代码更整洁与平滑:
委托的声明-->
public delegate void PrintOutput(string param);
// 委托指向的函数-->转化为一个Linq的形式
PrintOutput printOutPut = (param) => Console.WriteLine(param);
printOutPut("打印一个字符串!");
4. Action委托的使用方法:
4.1 定义一个带有Action委托参数的函数:
例如:
private static void OutputPrint(Action<string> action,string param)
{
action(param);
}
4.2 入口函数调用:
Action<string> action = (param) => Console.WriteLine(param);
OutputPrint(action, "打印一个字符串!");
二、带返回值的委托(.NET FCL中包含Func委托):
1. 使用关键字delegate声明委托:
public delegate string PrintOutputTest(string param);
//定义委托需要调用的函数
private static string OutputTest(string param)
{
return param;
}
//委托在入口方法中的调用过程
PrintOutputTest printOutPutTest = OutputTest;
Console.WriteLine(printOutPutTest("打印一个字符串!"));
注意:其他的几种写法,请仿照没有返回值的写法.
2. Func委托的使用:
public delegate string PrintOutputTest(string param);
//定义委托需要调用的函数
public static string OutputPrintTest(Func<string,string> action, string param)
{
return action(param);
}
//委托在入口方法中的调用过程
Func<string, string> action = (param) => { return param; };
Console.WriteLine(OutputPrintTest(action, "打印一个字符串!"));
注意:其他的几种写法,请仿照没有返回值的写法.

浙公网安备 33010602011771号