The Loops in C#

原创 2005年06月01日 11:39:00

在C#中,有几种循环方式,do, while, for,foreach。好像foreach是用的比较少的一种,而其实从.net 1.1的版本以后,foreach循环是效率最高的一种。比如下面几个例子:

int [] foo = new int[100];

// Loop 1:
foreach ( int i in foo)
  Console.WriteLine( i.ToString( ));

// Loop 2:
for ( int index = 0;
  index < foo.Length;
  index++ )
  Console.WriteLine( foo[index].ToString( ));

// Loop 3:
int len = foo.Length;
for ( int index = 0;
  index < len;
  index++ )
  Console.WriteLine( foo[index].ToString( ));
有些人可能会觉得第三种是效率最高的,因为它把Length提到了循环体外。实际上在C#编译器产生的代码中,为了安全性,每次循环都要检查边界,所以即使你的代码把Length放在循环体外,编译器产生的代码仍然要在每次循环中检查Length的边界情况。而编译器可以自动为foreach语句产生最适合,最有效率的代码。

使用foreach还有一个好处是如果你改变了集合的类型,不会影响到其他的代码段,比如开始你用的是数组,后来又改成了ArrayList。如

果你用的是其他的循环方式,就必须修改相应的代码,而使用foreach就不会有这样的情况。
//int [] foo = new int[100];
ArrayList foo = new ArrayList( 100 );

int sum = 0;
for ( int index = 0;
  // won't compile: ArrayList uses Count, not Length
  index < foo.Length;
  index++ )
  // won't compile: foo[ index ] is object, not int.
  sum += foo[ index ];

图解Oracle 表连接优化之嵌套循环连接(Nested loops join)

当一条SQL语句引用多张表连接时,Oracle的查询优化器(Optimizer)不仅
  • seagal890
  • seagal890
  • 2014年06月22日 23:30
  • 6593

HDU3853:LOOPS(概率DP)

Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help...
  • libin56842
  • libin56842
  • 2013年08月18日 11:39
  • 2161

Some issues caused by memory parameter not well configed

本文记录了一些因为内存参数配置引起的一些issue. 在分析这些issue的时候, 因为不能肯定root cause是硬件引起且涉及分工, 所以有些语句表达的比较委婉, 仅从技术角度分析问题所在. 在...
  • zirconsdu
  • zirconsdu
  • 2012年11月19日 19:04
  • 4199

postfix "loops back to myself"

我们客户公司(infor-trans.com)的邮件发不进我们公司邮箱(cn-gd.uc.com.tw),他们管理员传给我的maillog如下: maillog: Mar  5 10:02:51 ...
  • u014461454
  • u014461454
  • 2014年03月31日 17:33
  • 898

oracle执行计划中NESTED LOOPS SEMI (即半嵌套循环)的解释

在存在in的子查询的SQL语句和存在EXISTS的相关子查询的SQL语句的执行计划里,有NESTED LOOPS SEMI (即半嵌套循环)。 所谓的NESTED LOOPS SEMI (即半嵌套...
  • haiross
  • haiross
  • 2014年12月25日 11:27
  • 3430

oracle执行计划-Nested Loops (nl)-1

嵌套循环(Nested  Loops (NL))       假如有A、B两张表进行嵌套循环连接,那么Oracle会首先从A表中提取一条记录,然后去B表中查找相应的匹配记录,如果有的话,就把该条记录...
  • suyishuai
  • suyishuai
  • 2014年01月01日 20:52
  • 1523

USACO 4.1 Fence Loops (fence6)

/* 这题是求无向图中的一个最小环的长度。 主要思路是:因为边都是直线,边的两点之间的最短距离必然是这个边长。那么, 再求一条到两顶点的最短距径,这个路径与边构成了一个环。这个环是包含该边的最...
  • u010114214
  • u010114214
  • 2014年03月02日 15:15
  • 1233

认识优化查询中的Merge Join、Nested Loops和Hash Match

1.基本概念:     Merge Join([排序]合并联接)、Nested Loops(嵌套循环联接)、Hash Match都是物理运算符。       Merge Join常执行Inner...
  • yongsheng0550
  • yongsheng0550
  • 2010年04月05日 17:51
  • 19159

【sql调优之执行计划】nested loops join and nested loop join outer

Nested loops(嵌套循环)看一个例子: SQL> select b.* from scott.emp a,scott.dept b   2  where a.deptno = b.dep...
  • cuiyan1982
  • cuiyan1982
  • 2015年05月29日 09:49
  • 251

NESTED LOOPS 成本计算

SQL> select * from v$version where rownum=1; BANNER -----------------------------------------------...
  • robinson1988
  • robinson1988
  • 2011年08月02日 17:43
  • 5271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:The Loops in C#
举报原因:
原因补充:

(最多只允许输入30个字)