程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中新特性的學習:Delegate、匿名方法、lambda表達式

C#中新特性的學習:Delegate、匿名方法、lambda表達式

編輯:C#入門知識

最近在修改一個項目的代碼中,用到了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); 

 
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]  px;">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這些動態語言的影子。雖然越來越偏離靜態語言的道路,但從另一個角度來說,這些特性也都是為了提高程序員的生產力。至於被接受與否,還是讓時間來說話吧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved