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

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

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

      關于List<T>.FindLast的應用小例子

      實際游戲開發中,經常會有這種需求,比如玩家當前精通值1500,需要判斷玩家當前的精通評價,如表。

      按1500精通值,那么區間在1000~2000之間,玩家當前的正確評價是【略知一二】


      首先最容易想到的循環遍歷比對方式,沒問題,但似乎有點僵硬,想著是不是可以改進一下

      public SwordProficientConfig GetProficientLevel(int proficientValue)
      {
          //如果精通值>=最后1條記錄,直接返回最后一個記錄
          if (proficientValue>=this.DataList[^1].SumProficientValue)
          {
              return this.DataList[^1];
          }
          
          for (int i = 0; i < this.DataList.Count; i++)
          {
              //如果不是最后1條,比對是否 >=當前記錄 且 <下條記錄
              if (proficientValue>=this.DataList[i].SumProficientValue && proficientValue<this.DataList[i+1].SumProficientValue)
              {
                  return this.DataList[i];
              }
          }
      
          return this.DataList[0];
      }

      群里詢問,大佬建議可以試試Find方法,于是自己去查了Find的用法,重新嘗試。寫完之后,emm.....用了,但是沒完全用,判斷思路上還是沒有脫離第一種寫法,而且顯得更累贅,思維要跳出來。

      public SwordProficientConfig GetProficientLevel2(int proficientValue)
      {
          //如果精通值>=最后1條記錄,直接返回最后一個記錄
          if (proficientValue>=this.DataList[^1].SumProficientValue)
          {
              return this.DataList[^1];
          }
      
          //如果不是最后1條,比對是否 >=當前記錄 且 <下條記錄
          return this.DataList.Find(delegate(SwordProficientConfig config)
          {
              int nextIndex = this.DataList.IndexOf(config)+1;
              return proficientValue >= config.SumProficientValue && proficientValue < this.DataList[nextIndex].SumProficientValue;
          });
      }

      嘗試改進,簡潔了一些,但是有兩個問題:

      1、如果精通值>最大值,還是需要單獨判斷一次,不夠簡潔;

      2、結果不正確,返回的是2000的記錄,而不是1000的記錄,因為1500不會<2000,那么2000就是首條匹配記錄了;

      public SwordProficientConfig GetProficientLevel3(int proficientValue)
      {
          //如果精通值>=最后1條記錄,直接返回最后一個記錄
          if (proficientValue>=this.DataList[^1].SumProficientValue)
          {
              return this.DataList[^1];
          }
          
          //返回精通值>配置值的最后一條記錄
          return this.DataList.Find(config => proficientValue < config.SumProficientValue);
      }

      最后把條件逆轉一下,然后采用FindLast來返回最后一條符合的記錄,完美,一行搞定!

      public SwordProficientConfig GetProficientLevel3(int proficientValue)
      {
          //返回精通值>配置值的最后一條記錄
          return this.DataList.FindLast(config => proficientValue > config.SumProficientValue);
      }
      posted @ 2022-07-08 10:28  qianxun0975  閱讀(144)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 护士张开腿被奷日出白浆| 一区二区三区国产亚洲网站| 久久人妻精品大屁股一区| 97欧美精品系列一区二区| 九九热精彩视频在线免费| 国产精品久久久久aaaa| 文登市| 日韩中文字幕综合第二页| 人妻少妇88久久中文字幕| 国产精品一区久久人人爽| 成人午夜视频在线| 欧美高清一区三区在线专区| 国产乱色熟女一二三四区| 熟女一区二区中文字幕| 欧美最新精品videossexohd| 国产在线精品中文字幕| 一区二区福利在线视频| 2021国产在线视频| 国产成人精品a视频一区| 国产日产亚洲系列av| 98日韩精品人妻一二区| 国产成人一区二区三区在线| 国产强奷在线播放免费| 色综合色狠狠天天综合网| 日韩人妻无码精品久久| 国产成人精品日本亚洲直播| 亚洲女人天堂成人av在线| 亚洲女人天堂| 苍井空毛片精品久久久| 久久男人av资源站| 成人无码精品免费视频在线观看 | 国产精品无码a∨麻豆| jizz国产免费观看| 推特国产午夜福利在线观看| 免费又爽又大又高潮视频| 中国大陆高清aⅴ毛片| 免费可以在线看a∨网站| 日本道高清一区二区三区| 久久在线视频免费观看| 久久国产精品色av免费看| 亚洲精品www久久久久久|