C#中新特性的学习:Delegate、匿名方法、lambda表达式
最近在修改一个项目的代码中,用到了lambda表达式的写法,就顺便学习了一下,发现弄清楚lambda必须要弄清楚匿名方法,弄清楚匿名方法必须要弄清楚Delegate,弄清楚Delegate还要理解C++的指针,还好之前用过Delegate,闲话少叙,还是分享一下测试代码吧。
1、Delegate
[csharp]
<span style="font-size:18px;">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);
} www.zzzyk.com
public void HelloDelegate(string message)
{
MessageBox.Show(message);
}
</span>
2、匿名方法:
[csharp]
<span style="font-size:18px;">TestClass tc = new TestClass();
tc.HelloDelegate("hello anonymous method", delegate(string name)
{
MessageBox.Show(name);
});</span>
3、Lambda表达式:
[csharp]
<span style="font-size:18px;">TestClass tc = new TestClass();
tc.HelloDelegate("hello lambda", n => MessageBox.Show(n));</span>
其实比较一下代码就看得出来,匿名方法只是简化了一下代理的写法,而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这些动态语言的影子。虽然越来越偏离静态语言的道路,但从另一个角度来说,这些特性也都是为了提高程序员的生产力。至于被接受与否,还是让时间来说话吧。
补充:软件开发 , C# ,