-----------定义委托↓------------------
string r =FormartStr(StrFormat);//返回:[error]发生了错误! 2019-10-22
//自定义的格式化两字符串方法
public string StrFormat(string t1, string t2)
{
return "[" + t1+ "]" + t2 + " " + DateTime.Now.ToShortDateString() ;
}
public delegate string MyDelegate(string v, string v2);
public string FormartStr(MyDelegate md)
{
string v = "error";
string v2 = " 发生了错误! ";
string str = "";
if (md != null)
str = md(v, v2);//坑
return str;
}
-----------委托Action↓----------
Action<string,string> ac = M1;
ac("error","发生了错误!");//调用
public void M1(string t1, string t2)
{
Console.WriteLine("[" + t1+ "]" + t2 + " " + DateTime.Now.ToShortDateString());
}
-----------委托Action + 匿名函数(有参 无返回值)↓----------
Action<string,string> ac = delegate (string t1, string t2)
{
Console.WriteLine("[" + t1+ "]" + t2 + " " + DateTime.Now.ToShortDateString());
};
ac("error","发生了错误!");//输出:[error]发生了错误! 2019-10-22
-----------委托Func + 匿名函数(有参 有返回值)↓----------
Func<string, string, string > fu = delegate (string t1, string t2)
{
return "[" + t1+ "]" + t2 + " " + DateTime.Now.ToShortDateString();
};
string rlt = fu("error","发生了错误!"); //输出:[error]发生了错误! 2019-10-22
-----------委托 + lambda(n个参 n个返回值)↓----------
1、Action a1 = () => { Response.Write("aaff"); };
a1();//匿名方法是lambda表达式(0个参,无返回值)
2、Action<int> a2 = (s) => { Response.Write("参数值是:"+s); };
a2(32);//参数值是:32 (1个参,无返回值)
3、 Func<int, int, string> fun2 = (t1, t2) => { return "[" + t1+ "]" + t2 + " " + DateTime.Now.ToShortDateString(); };
string r2=fun2(1,2);//Func的最后一个是返回值类型,本处返回值是string,其中t1和t2是入参(前面不用写数据类型)。
“自定义委托、系统自带委托、匿名函数、lambda表达式”比较
最新推荐文章于 2025-01-05 10:00:00 发布