“自定义委托、系统自带委托、匿名函数、lambda表达式”比较

-----------定义委托↓------------------
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是入参(前面不用写数据类型)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值