当前位置:编程学习 > C#/ASP.NET >>

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# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,