首頁  >  文章  >  後端開發  >  關於.net 3.5中的委託實例

關於.net 3.5中的委託實例

零下一度
零下一度原創
2017-06-23 16:05:191431瀏覽

  .net 3.5引進了Linq,lambda表達式,所以委託的創建變得更加簡單和優雅了。

.net 3.5中的委託

 引入lambda表達式後,就不需要再使用匿名方法了,使得創建委託的方式更加簡單和優雅。 其實如果lambda表達式先引入,那就不會有匿名方法了。

Lambda表達式在C#中的寫法是“arg-list => expr-body”,“=>”符號左邊為表達式的參數列表,右邊是表達式體(body)。參數清單可以包含0到多個參數,參數之間使用逗號分割。

 1 namespace DelegateDemo 2 { 3     //声明委托 4     public delegate void MyDel(string arg1, string arg2); 5  6     class Program 7     { 8         static void Main(string[] args) 9         {10             //.net 3.5中的委托11 12             //创建委托,使用lambda表达式代替匿名方法13             MyDel myDel = (string arg1, string arg2) =>14             {15                 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));16             };17 18             //调用委托19             myDel("aaa", "bbb");20 21             Console.ReadKey();22         }23     }24 }

 

省略參數類型

#因為編譯器可以從委託宣告中知道委託參數的型別(這個特性叫做型別推演),所以允許我們省略參數類型,所以程式碼簡化成下面這樣。

1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) =>3 {4     Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));5 };

 

#附註,如果只有一個參數,還可以省略參數型別周圍的圓括號。

使用語句取代表達式

因為lambda表達式允許表達式體是語句或語句塊,所以當表達式體只有一個語句時,可以可以語句代替語句塊,繼續簡化。如下程式碼:

1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) => Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));

 

##

以上是關於.net 3.5中的委託實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn