//委托,不具有参数和返回值
//Action C#封装的无参数无返回值的委托
Action action = () => DateTime.Now.ToString();
action.Invoke();//同步但现场
action.BeginInvoke(null, null);//异步多线程
//委托,具有参数和返回值
//Func C#封装的有参数有返回值的委托
Func fun = (a, b) => DateTime.Now.Day.ToString() + $"{a}+{b}";
string result = fun.EndInvoke(fun.BeginInvoke(1, 2, null, null));
//lambda表达式,写一个方法给委托
Action action2 = () => DateTime.Now.ToString();//()代表无参,"=>"后面写方法体
//除了最后一个为返回值类型,前面都是参数可多个
//(a, b)参数 //$"{a}+{b}" 字符串格式化
Func fun2 = (a, b) => DateTime.Now.Day.ToString() + $"{a}+{b}";
//lambda多行方法体
Func fun3 = (aa, bb) =>
{
return DateTime.Now.Day.ToString() + $"{aa}+{bb}";
};
string result2 = fun3.EndInvoke(fun3.BeginInvoke(20, 30, null, null));//调用接收返回值