亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# 循環判斷會進來幾次的實現代碼

2019-10-29 19:59:08
字體:
來源:轉載
供稿:網友

最近有小伙伴告訴我,在循環的判斷條件只會計算一次,本金魚不相信,于是就做了測試,本文記錄我做的測試。

先來寫一個簡單的代碼, 就一個循環,循環的判斷是從一個函數獲取值

class Program  {    static void Main(string[] args)    {      var meepeMorcear = new MeepeMorcear();      meepeMorcear.BirmeruLerrayjairbay();    }  }  class MeepeMorcear  {    public void BirmeruLerrayjairbay()    {      for (int i = 0; i < DaydrearNenawerlai(); i++)      {        Console.WriteLine("第" +i.ToString()+"個逗比");      }    }    public int DaydrearNenawerlai()    {      Console.WriteLine("進入");      return 10;    }  }

通過 Main 調用 BirmeruLerrayjairbay ,這個函數里面的 for 判斷是 DaydrearNenawerlai 拿到一個值,我嘗試在 release 運行,結果每個判斷都需要進入 DaydrearNenawerlai 函數,請看輸出

進入
第0個逗比
進入
第1個逗比
進入
第2個逗比
進入
第3個逗比
進入
第4個逗比
進入
第5個逗比
進入
第6個逗比
進入
第7個逗比
進入
第8個逗比
進入
第9個逗比

也就是在 Debug 或 Release 下,for 里面的判斷都是需要執行,所以在 for 里的判斷如果寫了很長的計算,那么就會在每次循環都需要重新計算。即使每次計算出來的值都是一樣,也需要重新計算。

所以這樣看起來性能不如這樣寫,使用一個臨時的變量獲取判斷的值

public void BirmeruLerrayjairbay()    {      var mowraiTepalor = DaydrearNenawerlai();      for (int i = 0; i < mowraiTepalor; i++)      {        Console.WriteLine("第" +i.ToString()+"個逗比");      }    }

但是很快,另一個小伙伴告訴我,你把輸出去掉,然后使用斷點,你再看看

C#,循環,判斷,代碼

我添加了斷點,在斷點輸出 123 然后運行

C#,循環,判斷,代碼

這時我發現運行沒有輸出 123 也就是函數沒有進來,我再次添加斷點,跟著函數也沒有訪問

所以這時的 DaydrearNenawerlai 函數就被優化掉了

我和一個小伙伴說了這個問題,他說是被 IL 優化了,我一點不相信,所以我就去看 IL 代碼

從下面的代碼

public void BirmeruLerrayjairbay()    {      for (int i = 0; i < DaydrearNenawerlai(); i++)      {        Console.WriteLine("第" +i.ToString()+"個逗比");      }    }    /// <summary>    /// 進入lindexi.github.io可以看到更多博客    /// </summary>    /// <returns></returns>    public static int DaydrearNenawerlai()    {      return 10;    }

轉 IL 可以看到下面代碼,我會在 IL 添加很多注釋,所以很容易看懂。

.method public hidebysig instance void   BirmeruLerrayjairbay() cil managed  {  .maxstack 3  .locals init (   [0] int32 i  )  // 第 23 行 18 個字符到 27 個字符  // [23 18 - 23 27]  IL_0000: ldc.i4.0   // 定義 i ,代碼的 int i = 0;    IL_0001: stloc.0   // i  IL_0002: br.s     IL_0023  // 這里就是進入循環 for ,在 IL 不管 for 還是 while 都是差不多  // start of loop, entry point: IL_0023   // [25 17 - 25 60]   // 下面這個代碼就是 Console.WriteLine("第" +i.ToString()+"個逗比"); 從代碼可以看到   // 需要先申請"第"   IL_0004: ldstr    "第"   // 然后把 i 放入棧   IL_0009: ldloca.s   i   // 調用 int.ToString ,使用的是實例的方法   IL_000b: call     instance string [mscorlib]System.Int32::ToString()   // 把"個逗比"放入棧   IL_0010: ldstr    "個逗比"   // 調用字符串組合方法,組合三個字符串,返回一個字符串。   // 把剛才入棧三個字符串出棧,返回的字符串入棧   IL_0015: call     string [mscorlib]System.String::Concat(string, string, string)   // 調用 Console.WriteLine ,從棧拿到一個字符串輸出   IL_001a: call     void [mscorlib]System.Console::WriteLine(string)   // 下面是 i++ 代碼   // [23 55 - 23 58]   // 將指定索引處的局部變量加載到計算堆棧上,這里的索引是 0 ,在代碼的變量是 i 所以把 i 加載到計算堆棧   IL_001f: ldloc.0   // i   // 將整數值 1 作為 int32 推送到計算堆棧上   IL_0020: ldc.i4.1      // 從堆棧出棧兩個數值進行相加,返回的值放在棧   IL_0021: add        // 從計算堆棧的頂部彈出當前值并將其存儲到指定索引處的局部變量列表中,這里索引是 0 ,在代碼的變量是 i ,所以 i = i + 1 的代碼就是這樣做   IL_0022: stloc.0   // i   // 從堆棧加載 i ,把 i 入棧   // [23 29 - 23 53]   IL_0023: ldloc.0   // i   // 調用方法 DaydrearNenawerlai 拿到返回值   IL_0024: call     int32 MuhoubearWhedoofi.MeepeMorcear::DaydrearNenawerlai()   // 如果第一個值小于第二個值,則將控制轉移到目標指令,這里的第一個值就是 i ,第二個值就是 DaydrearNenawerlai 的返回值。跳轉到標簽 IL_0004 ,如果沒有小于,就繼續代碼。   IL_0029: blt.s    IL_0004  // end of loop  // [27 9 - 27 10]  IL_002b: ret      } // end of method MeepeMorcear::BirmeruLerrayjairbay .method public hidebysig static int32   DaydrearNenawerlai() cil managed  {  .maxstack 8  // 把一個值 放入堆棧,放入的是 10 ,然后從棧拿到值返回  // [36 13 - 36 23]  IL_0000: ldc.i4.s   10 // 0x0a  IL_0002: ret      } // end of method MeepeMorcear::DaydrearNenawerlai

從上面代碼可以發現,實際 DaydrearNenawerlai 沒有被優化掉,還是有這個方法。

總結

以上所述是小編給大家介紹的C# 循環判斷會進來幾次的實現代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲一区| 777777777亚洲妇女| 亚洲午夜性刺激影院| 精品成人国产在线观看男人呻吟| 精品自在线视频| 91日韩在线视频| 国产视频精品在线| 欧美小视频在线| 欧美成人激情图片网| 91香蕉电影院| 亚洲天堂网在线观看| 欧美亚洲在线播放| 国产日韩中文字幕| 国产亚洲成精品久久| 北条麻妃99精品青青久久| 亚洲精品国产精品乱码不99按摩| 在线观看亚洲视频| 国产91精品久久久久久| 亚洲视频国产视频| 日韩成人激情视频| 亚洲视频在线观看| 亚洲人高潮女人毛茸茸| 另类色图亚洲色图| 国产成人在线播放| 亚洲一区二区福利| 色悠久久久久综合先锋影音下载| 日本老师69xxx| 九色精品美女在线| 成人久久久久爱| 亚洲第一网站男人都懂| 国产精品视频免费观看www| 日韩视频免费在线观看| 中文字幕亚洲色图| 精品高清一区二区三区| 日韩成人在线视频观看| 久久综合久久八八| 91成人天堂久久成人| 国产精品免费久久久久影院| 福利一区视频在线观看| 久久不射热爱视频精品| 亚洲欧美日韩图片| 日韩**中文字幕毛片| 国产精品久久国产精品99gif| 日韩乱码在线视频| 国产成人精品网站| 久久精品视频导航| 欧美一区二区影院| 国产一区二区三区网站| 久久视频免费在线播放| 国产视频在线观看一区二区| 久久久久久国产精品| 久久国产精品99国产精| 欧美成人在线影院| 日韩美女在线看| 午夜精品一区二区三区在线视| 91精品国产高清自在线看超| 欧美亚洲国产另类| 久久久久久成人| 国产精品天天狠天天看| 欧美成人免费全部观看天天性色| 国产a级全部精品| 久久精品视频在线| 中文字幕日韩欧美在线| 欧美成人精品一区二区| 欧美日韩国产一区在线| 国产精品黄页免费高清在线观看| 亚洲第一av在线| 欧美美最猛性xxxxxx| 国产精品 欧美在线| 在线播放国产一区中文字幕剧情欧美| 国产成人小视频在线观看| 欧美激情精品在线| 国产精自产拍久久久久久蜜| 精品国产依人香蕉在线精品| 日韩免费观看高清| 成人性生交xxxxx网站| 国产一区二区动漫| 欧洲成人免费视频| 日本精品久久电影| 日本成人激情视频| 深夜福利亚洲导航| 亚洲欧美精品在线| 欧美激情在线一区| 亚洲视频综合网| 精品久久久久久久久国产字幕| 久久九九国产精品怡红院| 日韩欧美在线国产| 亚洲激情视频网站| 97视频免费观看| 亚洲国产精品一区二区久| 95av在线视频| 一本大道亚洲视频| 久久久久久国产免费| 永久免费看mv网站入口亚洲| 中文字幕v亚洲ⅴv天堂| 久久久伊人日本| 亚洲18私人小影院| 中文字幕一区二区精品| 正在播放亚洲1区| 欧美成人免费播放| 国产精品久久久久久久久借妻| 91牛牛免费视频| 成人在线中文字幕| 国产97人人超碰caoprom| 欧美裸体xxxx极品少妇| 亚洲性xxxx| 日韩电视剧免费观看网站| 北条麻妃一区二区在线观看| 91成人性视频| 久久久在线观看| 日韩毛片中文字幕| 日韩精品免费看| 国产亚洲一级高清| 日韩在线视频网| 色妞一区二区三区| 久久久成人精品| 日韩成人在线视频| 国产精品久久久久久久久久ktv| 亚洲网址你懂得| 8x拔播拔播x8国产精品| 亚洲国产精品悠悠久久琪琪| 国产自产女人91一区在线观看| 日韩在线免费视频| 欧美激情视频三区| 亚洲香蕉成人av网站在线观看| 欧美性极品xxxx做受| 在线看片第一页欧美| 国产精品国内视频| 一本一本久久a久久精品牛牛影视| 亚洲午夜精品久久久久久性色| 国产亚洲精品一区二区| 精品视频久久久| 国产成人综合av| 91久久久久久久久| 日本精品视频在线播放| 国产综合在线看| 91免费的视频在线播放| 国内精品久久久| 国产日韩中文在线| 国产日韩专区在线| 国产亚洲人成a一在线v站| 亚洲精品美女久久久久| 在线性视频日韩欧美| 国自产精品手机在线观看视频| 热99在线视频| 亚洲aa中文字幕| 91精品国产91久久久久久最新| 国产精品一区二区性色av| 亚洲成人精品视频在线观看| 91免费精品国偷自产在线| 亚洲女成人图区| 欧美韩国理论所午夜片917电影| 91精品久久久久久久久久久| 日本精品一区二区三区在线播放视频| 久久天天躁狠狠躁夜夜av| 久久久www成人免费精品| 中文字幕视频一区二区在线有码| 精品久久久久久久久久久久久久| 久久精品视频网站| 欧美在线观看网址综合| 亚洲精品中文字| 欧美电影免费观看网站| 97免费中文视频在线观看| 久久69精品久久久久久久电影好|