C#中新特性的学习:Delegate、匿名方法、lambda表达式

最近在修改一个项目的代码中,用到了lambda表达式的写法,就顺便学习了一下,发现弄清楚lambda必须要弄清楚匿名方法,弄清楚匿名方法必须要弄清楚Delegate,弄清楚Delegate还要理解C++的指针,还好之前用过Delegate,闲话少叙,还是分享一下测试代码吧。

1、Delegate

public delegate void MyDelegate(string message);
public class TestClass
{
 public void HelloDelegate(string message,MyDelegate md)
 {
  if (md!=null)
  {
   md(message);
  }
 }
}


private void button4_Click(object sender, EventArgs e)
{
 TestClass tc = new TestClass();
 tc.HelloDelegate("hello delegate", HelloDelegate);
}

public void HelloDelegate(string message)
{
 MessageBox.Show(message);
}


2、匿名方法:

TestClass tc = new TestClass();
tc.HelloDelegate("hello anonymous method", delegate(string name) 
{
	MessageBox.Show(name);
});


3、Lambda表达式:

TestClass tc = new TestClass();
tc.HelloDelegate("hello lambda", n => MessageBox.Show(n));


其实比较一下代码就看得出来,匿名方法只是简化了一下代理的写法,而lambda只是简化了一个匿名方法的的写法,当然,这只是lambda的的一个应用,再就是lambda在集合方面的应用也是很方便的,这后面再与大家分享。

在写测试代码的时候发现,lambda、匿名方法、隐式类型、对象初始化器等C#的新特性都是和javascript的语法很相似,搜索了一下网上的文章,还真有此说法。

引用一下原文:

C#历史回顾

回顾C#发展的历史,C# 1.0完全是模仿Java,并保留了C/C++的一些特性如struct,新学者很容易上手;C# 2.0加入了泛型,也与Java1.5的泛型如出一辙;C# 3.0加入了一堆语法糖,并在没有修改CLR的情况下引入了Linq,简直是神来之笔,虽然很多项目出于各种各样如性能之类的原因没有采用,但非常适合小型程序的快速开发,减轻了程序员的工作量,也提高了代码的可读性;C# 4.0增加了动态语言的特性,从里面可以看到很多javascript、python这些动态语言的影子。虽然越来越偏离静态语言的道路,但从另一个角度来说,这些特性也都是为了提高程序员的生产力。至于被接受与否,还是让时间来说话吧。

引用自:http://developer.51cto.com/art/200908/143718.htm

总之,收获不小,希望有兴趣的朋友相互交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值