成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

談C#中循環(huán)結(jié)構(gòu)的效率問題

開發(fā) 后端
循環(huán)結(jié)構(gòu)是所有程序語言中都有的,本文主要介紹的是循環(huán)結(jié)構(gòu)的效率問題。希望會對你有幫助,一起來看。

順序、選擇、循環(huán)是一切程序的三大結(jié)構(gòu)。今天我們就來說一說C#循環(huán)結(jié)構(gòu)的一個小問題。

c#的循環(huán)結(jié)構(gòu)有四種:

  • for
  • while…do…
  • do…while…
  • foreach

在這四種結(jié)構(gòu)中,都有循環(huán)結(jié)束的判斷。大于某個數(shù)字,小于某個數(shù)字,或者是其他條件表達式的判斷。今天我們就說一下關于數(shù)字的判斷。

我們的數(shù)字可能存放在定義好的一個變量中,也可能從是某個集合的長度,也可能是某個方法返回的信息。這里就討論一下某個方法的返回信息。

假定存在下面的一個方法,返回值是一個List<int>

  1. static List<int> GetIntList()   
  2. {   
  3. Console.WriteLine("第 {0} 進入GetIntList方法",Counter);   
  4. Counter++;   
  5. return new List<int>(){   
  6. 1,2,3,4,5};   
  7. }  

需要對這個方法的返回結(jié)果進行循環(huán)處理,剛開始大多數(shù)都會這么寫,以for循環(huán)為例。

  1. for (int i = 0; i < GetIntList().Count; i++)   
  2. {   
  3. }  

后來知道的多了一些,或者是聽到別人說,經(jīng)過自己的驗證。發(fā)現(xiàn)這個循環(huán)判斷條件有問題,每次判斷都會重新調(diào)用GetIntList方法,造成極大地浪費。就會修改成下面的樣子。

  1. int len=GetIntList().Count;   
  2. for (int i = 0; i < len; i++)   
  3. {   
  4. }  

先定義一個變量,保存集合的長度。

經(jīng)過驗證,while…do、do…while也存在類似的問題,也需要注意。

有時候我們需要做的就是對集合里面的每個元素進行處理,我們會選用foreach這個便利的循環(huán)結(jié)構(gòu),因為他不用考慮下標越界的問題。從上面的驗證結(jié)果看,就會有人說下面的代碼有問題。

  1. foreach (int i in GetIntList())   
  2. {   
  3. }  

到底有沒有問題呢?需要驗證。

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Text;   
  5. using System.Data.Common;   
  6. using System.Configuration;   
  7. using MongoDB.Driver;   
  8. using AutoTest.ServiceLocator;   
  9. using System.Reflection;   
  10. using AutoTest.Common;   
  11. namespace AutoTest   
  12. {   
  13. class Program   
  14. {   
  15. static void Main(string[] args)   
  16. {   
  17. Console.WriteLine("------------------------------Begin------------------------------");   
  18. Console.WriteLine("Foreach循環(huán)");   
  19. Counter = 1;   
  20. foreach (int i in GetIntList())   
  21. {   
  22. }   
  23. Console.WriteLine("For循環(huán)");   
  24. Counter = 1;   
  25. for (int i = 0; i < GetIntList().Count; i++)   
  26. {   
  27. }   
  28. Console.WriteLine("do...while...循環(huán)");   
  29. Counter =1;   
  30. int num=0;   
  31. do   
  32. {   
  33. num++;   
  34. }   
  35. while (num < GetIntList().Count );   
  36. Console.WriteLine("while...do...循環(huán)");   
  37. Counter = 1;   
  38. num=0;   
  39. while (num < GetIntList().Count)   
  40. {   
  41. num++;   
  42. };   
  43. Console.WriteLine("------------------------------End------------------------------");   
  44. Console.ReadKey();   
  45. }   
  46. static int Counter=1;   
  47. static List<int> GetIntList()   
  48. {   
  49. Console.WriteLine("第 {0} 進入GetIntList方法",Counter);   
  50. Counter++;   
  51. return new List<int>(){   
  52. 1,2,3,4,5};   
  53. }   
  54. }   
  55. }  

其實經(jīng)過驗證,發(fā)現(xiàn),foreach不同于其他三個循環(huán)結(jié)構(gòu),是不會發(fā)生重復的GetIntList方法調(diào)用的。

結(jié)論

1、foreach和其他三個循環(huán)結(jié)構(gòu)不太一樣。

2、需要用事實說話。

【編輯推薦】

  1. c#.net實體類序列化方法
  2. 淺析C#插件式程序開發(fā)經(jīng)驗
  3. 深入C# 序列化(Serialize)、反序列化(Deserialize)
  4. 用C#實現(xiàn)文件夾拷貝
  5. C#中的閉包是怎么捕獲變量的
責任編輯:于鐵 來源: 博客園
相關推薦

2009-02-05 15:32:23

接口委托

2009-08-28 17:18:55

foreach循環(huán)

2009-08-24 16:11:35

C#項目開發(fā)

2011-09-21 10:56:31

C#結(jié)構(gòu)

2009-08-28 16:37:32

C# for循環(huán)

2010-08-26 10:41:45

C#內(nèi)部類

2009-08-27 16:18:47

C#類C#結(jié)構(gòu)體

2025-01-09 08:01:26

2009-06-24 17:32:40

動態(tài)加載AppDoma

2009-08-07 11:26:53

C#數(shù)組結(jié)構(gòu)

2009-08-14 11:05:28

C#語言的結(jié)構(gòu)體

2009-08-13 11:18:50

C#結(jié)構(gòu)體

2009-08-13 14:46:03

C#結(jié)構(gòu)體定義

2009-09-08 15:28:24

C#委托

2009-08-21 17:24:18

C#控制攝像頭

2009-08-17 15:52:42

C#多態(tài)

2010-07-12 09:07:30

C#

2009-08-20 15:26:42

C#循環(huán)語句

2011-06-14 12:27:38

C#C++

2009-08-13 16:02:29

C#結(jié)構(gòu)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 永久免费视频 | 日本国产欧美 | 久久久久久91香蕉国产 | 国产欧美一区二区三区另类精品 | 国内精品99 | 色婷婷在线视频 | 成人午夜影院 | 亚洲午夜av久久乱码 | 中文字幕日韩欧美一区二区三区 | 国产精品视频入口 | 精品国产久 | 韩日一区二区三区 | 一区二区三区高清不卡 | 久草在线| 亚洲欧美一区二区三区在线 | 国产jizz女人多喷水99 | av免费网站在线观看 | 91精品一区二区三区久久久久 | 最新中文字幕一区 | 午夜在线观看视频 | 国产精品视频一二三区 | 国产二区av | 欧美在线不卡 | 黄色毛片黄色毛片 | 色成人免费网站 | 天天干夜夜拍 | 日韩免费一二三区 | 人人爽人人爽人人片av | 99精品免费久久久久久日本 | 国产精品久久久久婷婷二区次 | 中文字幕乱码视频32 | 另类在线 | 激情欧美日韩一区二区 | 亚洲网址 | 色花av| 免费看一区二区三区 | 国产一区二区三区四区五区加勒比 | 亚洲精品第一国产综合野 | 久久久久久国产精品 | 国产香蕉视频在线播放 | 色一情一乱一伦一区二区三区 |