<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      快速重溫C# 委托,匿名方法,Lambda,泛型委托,表達式樹

      第一:委托

      有些教材,博客說到委托都會提到事件,雖然事件是委托的一個實例,但是為了理解起來更簡單,今天只談委托不談事件。先上一段代碼:

      下邊的代碼,完成了一個委托應用的演示。一個委托分三個步驟:

       

       1 class Program
       2     {
       3         //step01:首先用delegate定義一個委托 。
       4         public delegate int CalculatorAdd(int x, int y);
       5         static void Main(string[] args)
       6         {
       7             //step03:用這個方法來實例化這個委托。
       8             CalculatorAdd cAdd = new CalculatorAdd(Add);
       9             //int result = cAdd(5, 6);
      10             int result = cAdd.Invoke(5, 6);
      11         }
      12         // step02:聲明一個方法來對應委托。
      13         public static int Add(int x, int y)
      14         {
      15             return x + y;
      16 
      17         }
      18 
      19 
      20     }

      step01:首先用delegate定義一個委托 。

      step02:聲明一個方法來對應委托。

      step03:用這個方法來實例化這個委托。

      至此,一個委托的應該就完成了,就可以調用委托了。

      第二:匿名方法

      在上一分鐘已經知道了,完成一個委托應用分三步走,缺一步都不行。

      但是微軟把三步做成兩步來走啊!所以微軟就用匿名方法來簡化上邊的三個步驟。

      匿名方法這個玩意兒怎么說呢,在C#中完全是可有可無的東西,只是為C#錦上添花,有人別出心裁給它取個名字叫語法糖。

       1  class Program
       2  {
       3         //step01:首先用delegate定義一個委托 。
       4         public delegate int CalculatorAdd(int x, int y);
       5         static void Main(string[] args)
       6         {
       7             //step02:用這樣的寫法 delegate(int x, int y) { return x + y; },把一個方法賦值給委托
       8             CalculatorAdd cAdd = delegate (int x, int y) { return x + y; };
       9             int result = cAdd.Invoke(5, 6);
      10         }
      11  }

      step01:首先用delegate定義一個委托 。

      step02:用這樣的寫法 delegate(int x, int y) { return x + y; },把一個方法賦值給委托,其實這種寫法就是匿名方法。

      這時會驚奇的發現,這不是三步當著兩步走了哇?

      第三分鐘:Lambda表達式

      原本很簡單的程序,加上幾個delegate關鍵字,這代碼一下就變得深奧了,深奧的東西懂的人就變少了,所以這個還可以作為加薪的籌碼。

      但是微軟對C#的設計理念是簡單易用。微軟就想方設法的來簡化delegate(int x, int y) { return x + y; }這個匿名方法,Lambda就出現了。

      下邊我來看幾種lambda表達式的寫法:

       class Program
          {
              public delegate int CalculatorAdd(int x, int y);
              static void Main(string[] args)
              {

                  //方法一:
                  CalculatorAdd cAdd1 = (int x, int y) => { return x + y; };
                  int result1 = cAdd1(5, 6);
                  //方法二:
                  CalculatorAdd cAdd2 = (x, y) => { return x + y; };
                  int result2 = cAdd2(5, 6);
                  //方法三:
                  CalculatorAdd cAdd3 = (x, y) => x + y;
                  int result3 = cAdd2(5, 6);
              }
          }

      第四:泛型委托

      隨著.net版本的不升級,新版本總要區別于舊版本吧,不然微軟的工程師怎么向他們的老大交差呀?所以微軟又來玩新花樣了。

       class Program
          {
           
              static void Main(string[] args)
              {
                  //方法一:
                  Func<int, int, int> cAdd1 = (int x, int y) => { return x + y; };
                  int result1 = cAdd1(5, 6);
                  //方法二:
                  Func<int, int, int> cAdd2 = (x, y) => { return x + y; };
                  int result2 = cAdd2(5, 6);
                  //方法三:
                  Func<int, int, int> cAdd3 = (x, y) => x + y;
                  int result3 = cAdd2(5, 6);
              }
          }

      不管是匿名方法還是Lambda表達式,完成一個委托的應用,都逃不過兩個步驟,一步是定義一個委托,另一步是用一個方法來實例化一個委托。微軟干脆把這兩步都合成一步來走了。用Func來簡化一個委托的定義。

      至此一個委托的應用就可用 Func<int, int, int> cAdd3 = (x, y) => x + y; 這樣一句話來完成了,其中的Func就是所謂的泛型委托。

      第五:表達式樹

      表達式樹其實與委托已經沒什么關系了,非要扯上關系,那就這么說吧,表達式樹是存放委托的容器。

      如果非要說的更專業一些,表達式樹是存取Lambda表達式的一種數據結構。

      要用Lambda表達式的時候,直接從表達式中獲取出來,Compile()就可以直接用了。如下代碼:

      class Program
      {
            static void Main(string[] args)
            {
                  Expression<Func<int, int, int>> exp = (x, y) => x + y;
                  Func<int, int, int> fun = exp.Compile();
                  int result = fun(2, 3);
             }
      }

       

      posted @ 2023-03-06 18:37  春光牛牛  閱讀(79)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费人成年激情视频在线观看| 国产在线播放专区av| 日韩丝袜欧美人妻制服| 一区二区三区鲁丝不卡| 丰满岳乱妇久久久| 在线播放亚洲人成电影| 亚洲精品国产第一区二区| 久久se精品一区二区三区| JIZZJIZZ国产| 天天弄天天模| 精品日本乱一区二区三区| 成人无码潮喷在线观看| 欧美大胆老熟妇乱子伦视频| 成人精品日韩专区在线观看| 亚洲第一国产综合| 中文字幕亚洲综合第一页| av无码免费一区二区三区| 九九热免费精品在线视频| 色窝窝免费播放视频在线| 欧美不卡无线在线一二三区观| 极品美女扒开粉嫩小泬图片| 亚洲岛国成人免费av| 农村老熟妇乱子伦视频| 色婷婷久久综合中文久久一本| 国产成人综合久久亚洲av| 骚虎视频在线观看| 亚洲精品日韩中文字幕| 浦北县| 岛国最新亚洲伦理成人| 久久成人国产精品免费软件| 边摸边吃奶边做爽动态| 亚洲老女人区一区二视频| 无遮挡aaaaa大片免费看| 色视频不卡一区二区三区| 亚洲中文字幕人妻系列| 男女性杂交内射女bbwxz| 国产99在线 | 欧美| 91精品久久久久久无码人妻| 呦系列视频一区二区三区| 国产三级精品三级| 艳妇乳肉豪妇荡乳av|