理解c# lambda表達式

最初單語句方法使用委託的方法如下例所示:

       delegate int CalculDelegate(int x, int y);
        private int Add(int x, int y)
        {
            return x + y;
        }
        public void Calculate()
        {
            CalculDelegate addDelegate = new CalculDelegate(Add);
            int sum = addDelegate(1, 2);
        }

其中Add是單語句方法。

後來引入匿名方法,Add方法就省了,上述代碼演變成如下所示:

delegate int CalculDelegate(int x, int y);

public void Calculate()
        {
            CalculDelegate addDelegate = delegate (int x, int y) { return x + y; };
            int sum = addDelegate(1, 2);
        }

再後來引入lambda表示式,形式更簡潔,如下:

delegate int CalculDelegate(int x, int y);

 public void Calculate()
        {
            CalculDelegate addDelegate = (x, y) =>  x + y;
            int sum = addDelegate(1, 2);
        }

其中“=>"讀爲“goes to"

再後來引入Func<>,連定義委託也省了,演變成如下:

 public void Calculate()
        {
             Func<int, int, int> addDelegate = (x, y) => x + y;
            int sum = addDelegate(1, 2);
        }

注意Func的最後一個參數代碼返回。

 

多語句方法支持

當然,lambda表示式也可以支持多語句方法,如下例 :

 public void Calculate()
        {
            Func<int, int, int>  addDelegate = (x, y) => 

             {

              x=2*x;

             y=2*y;

              return     x + y;

             }
            int result = addDelegate(1, 2);
        }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章