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