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

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

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

      常見的Lambda表達式引起的閉包問題

      以下代碼的原意是想找出list中滿足Name字段包含t, Remark字段包含mark的數據

      代碼
      //構造的搜索條件 希望Name包含t remark中包含mark中的文本
      Dictionary<string, string> forms = new Dictionary<string, string>();
      forms.Add(
      "Name", "t");
      forms.Add(
      "Remark", "mark");

      //構造一些數據 理論上全部數據都應該滿足上面的那個條件 (忽略大小寫)
      List<UserInformation> list = new List<UserInformation>() {
      new UserInformation(){Name ="Test1", Remark="Remark1"},
      new UserInformation(){Name ="Test2", Remark="Remark2"},
      new UserInformation(){Name ="Test3", Remark="Remark3"},
      };

      var lambda
      = list.AsQueryable();
      foreach (string key in forms.Keys)
      {
      string val = forms[key];
      if (key == "Name")
      lambda
      = lambda.Where(p => p.Name.Contains(val));//原意是 在條件是Name的時候 對Name字段做過濾
      if (key == "Remark")
      lambda
      = lambda.Where(p => p.Remark.Contains(val));//原意是 在條件是Remark的時候 對Remark字段做過濾
      }

      var data
      = lambda.ToList();//大家可以注意到結果是0條
      var data2 = list.AsQueryable().Where(p => p.Name.Contains(forms["Name"])).Where(p => p.Remark.Contains(forms["Remark"])).ToList();//這個的結果是3條

       

      不過實際情況是data中間一條記錄都沒有

      而hardcode算出來的data2中有3條記錄

       

      原因如下:

        這個lambda表達式 Where(p=>p.Name.Contains(val))  , 實際上只是保留了一個指向函數外部的val的引用 , 他這個時候并沒有把val的真實的值拷貝進來

        真正去讀取val值的時候是 lambda.ToList() 這個時候才真正執行lambda表達式取數據,過濾數據 ,也是這個時候才去讀取val的值

        而在foreach的第二次操作的時候 val的值被覆蓋mark了 那么就造成了 原來的Where(p=>p.Name.Contains(val))  變成了 Where(p=>p.Name.Contains("mark"))  

        注意那個值是mark而不是t

       

        如果我們把三條數據的Name都改成markdafafafadsf 之類的值 那么再次計算data的數據就會變成三條, 大家可以自己弄一下試試,

       

      作用域:

        本來val是一個臨時變量,他的生命周期應該在foreach結束以后就結束了

        但是 由于他被閉包引用,那么val的生命周期延長到引用對象的生命周期(那個lambda不死....val也就會一直活著)

        

       

       

      posted on 2011-01-07 14:42  聽說讀寫  閱讀(1893)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产成人无码一二三区视频| 欧美 亚洲 日韩 在线综合| 特级做a爰片毛片免费看无码| 精品无码人妻一区二区三区| 亚洲av午夜福利大精品| 丁香婷婷在线观看| 狠狠躁夜夜躁人人爽天天5| 亚洲日韩一区二区| 人妻丝袜无码专区视频网站| 高清无打码一区二区三区| 亚洲日韩性欧美中文字幕| 白丝乳交内射一二三区| 999福利激情视频| 2020久久国产综合精品swag| 日韩一区二区三区女优丝袜 | 亚洲一二三区精品与老人| 色橹橹欧美在线观看视频高清| a级免费视频| 亚洲欧美另类久久久精品播放的| 国产精品无码成人午夜电影| 日本五十路熟女一区二区| 日韩人妻无码精品专区综合网| 亚洲一区二区av观看| 国产麻豆精品一区一区三区| av区无码字幕中文色| 国产成人啪精品午夜网站| 国产熟睡乱子伦午夜视频| 韩国午夜理伦三级| 亚洲国产日韩一区三区| av偷拍亚洲一区二区三区| 精品日韩亚洲av无码| 亚洲av二区伊人久久| 亚洲成亚洲成网中文字幕| 国产亚洲无线码一区二区| 国产乱码精品一区二区三| 国产色无码专区在线观看| 精品国产成人网站一区在线| 无码伊人66久久大杳蕉网站谷歌| 亚洲国产一成人久久精品| 沁源县| 99精品偷自拍|