国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何創建C#Closure?

2019-11-14 13:35:52
字體:
來源:轉載
供稿:網友

javaScript中一個重要的概念就是閉包,閉包在Javascript中有大量的應用,但是你知道么?C#也可以創建Closure。下面就介紹一下如何在C#中創建神奇的閉包。

  在這之前,我們必須先知道如何在C#中定義函數

1  //函數定義,參數為string,返回為string2 Func<string, string> myFunc = delegate(string msg)3 {4       return "Msg:" + msg;5 };

  利用Lambda表達式也可以簡化上述的代碼,但是效果一樣:

1  //Lambda2  Func<string, string> myFuncSame = msg => "Msg:" + msg;

  定義好函數后,可以進行調用:

1  //函數調用2  string message= myFuncSame("Hello world");

  定義一個帶外部變量(相對于內嵌函數而言)的嵌套函數,外部函數將內部嵌套的函數進行返回:

復制代碼
 1  public static Func<int, int> Func() 2  { 3      var myVar = 1; 4      Func<int, int> inc = delegate(int var1) 5      { 6          //myVar能夠記錄上一次調用后的狀態(值) 7          myVar = myVar + 1; 8          return var1 + myVar; 9      };10      return inc;11  }
復制代碼

  C# Closure調用如下所示:

1 static void CsharpClosures()2 {3     var inc = Func();4     Console.WriteLine(inc(5));//75     Console.WriteLine(inc(6));//96 }

  當第二次調用inc(6)時,此時函數內變量myVar并未像第一次調用函數時進行重新初始化(var myVar=1),而是保留了第一次運算的值,即 2,因此inc(6)返回的結果為(2+1+6)=9.

水平有限,望各位園友不吝賜教!如果覺得不錯,請點擊推薦和關注! 
出處:http://www.survivalescaperooms.com/isaboy/ 
聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 耿马| 莫力| 新泰市| 安图县| 池州市| 哈巴河县| 盈江县| 栾川县| 兴仁县| 土默特左旗| 望谟县| 沂水县| 衡东县| 周口市| 漳州市| 津南区| 腾冲县| 开封县| 盘锦市| 泸溪县| 连山| 江西省| 万宁市| 桓仁| 榆林市| 秦皇岛市| 洛隆县| 攀枝花市| 塔城市| 施秉县| 徐汇区| 阿拉善盟| 望谟县| 交城县| 大埔区| 姜堰市| 贵南县| 永吉县| 南涧| 香港| 镇江市|