1. 程式人生 > >委託,匿名和Lambda

委託,匿名和Lambda

委託實現來型別安全的回撥方法。由於回撥無處不在,所以委託無處不在,時間模型是建立在委託機制上,Lambda表示式本質上就是一種匿名委託。

委託的定義(委託並不等於方法):
你是程式設計的,你現在正在寫一個ASP.NET網頁,而JS是你不熟悉的,於是你委託你的一位同事來幫助你完成JS部分。這就是委託,把你所不能做的事情交給其他人去做。而怎麼知道是哪個人去做呢?當然是要知道名字!而為了區別名字一樣的不同人,因此,需要描述一個特徵。
· public delegate string ProcessDelegate(string s1, string s2);

class Program
{
    static void Main(string[] args)
     {
        /*  呼叫方法  */
         ProcessDelegate pd = new ProcessDelegate(new Test().Process);
        Console.WriteLine(pd("Text1", "Text2"));
     }
 }

 public class Test
{
         /// <summary>
        /// 方法
       /// </summary>
      /// <param name="s1"></param>
     /// <param name="s2"></param>
    /// <returns></returns>
    public string Process(string s1,string s2)
   {
         return s1 + s2;
     }
 }·
 多播委託和委託鏈,以+=和-=操作符分別進行繫結和解除繫結的繫結。多播委託返回值一般為void,委託型別為非void型別

事件:事件是對委託的封裝,從委託的示例中可知,在客戶端可以隨意對委託進行操作,一定程度上破壞來面向的物件的封裝機制,因此時間實現來對委託的封裝。

Lambda,匿名函式,事件的詳解在之後再討論。