The Loops in C#

在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 ];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值