A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余攀 高级黑马   /  2013-3-2 18:33  /  2734 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余攀 于 2013-3-2 20:55 编辑

for结构和foreach 结构,两者都为循环控制结构,但是在什么样的时候用哪一个好呢?这里用的foreach根据什么来选择的
  1. //按照\r\n进行split
  2.             string[] lines = textBox1.Lines;
  3.             string maxName = "";
  4.             int maxScore = -1;
  5.             foreach(string line in lines)
  6.             {
  7.                 string[] strs = line.Split('=');
  8.                 string name=strs[0];
  9.                 string strScore=strs[1];

  10.                 int score = Convert.ToInt32(strScore);

  11.                 if(score>maxScore)
  12.                 {
  13.                     maxName = name;
  14.                     maxScore = score;
  15.                 }
  16.             }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

倒序浏览
foreach循环主要针对数组使用,楼主问为什么有了for循环之后,还会有foreach循环?那是因为for循环写起来很麻烦不是么?php里的数组长度是动态的,如果你要对一个数组进行什么操作,用for循环是不是还要把数组的长度先count出来,然后语句里面还要写入循环变量来(如:一般用$i,$j等)。比起foreach,for是不是麻烦很多?
回复 使用道具 举报
(1)循环语句是编程的基本语句,在C#中for语句,还提供了foreach语句来实现循环
(2)对于继承了IEnumerable接口的类型数据,才能使用foreach语句,那么对于使用foreach会访问IEnumerable接口中GetEnumerator方法来进行枚举
(3)foreach 的优点
第一个就是不用考虑数组起始索引是几,很多人可能从其他语言转到C#的,那么原先语言的起始索引可能不是1,例如VB或者Delphi语言,那么在C#中使用数组的时候就难免疑问到底使用0开始还是用1开始呢,那么使用foreach就可以避免这类问题。
第二个对于多维数组操作用foreach就非常简便。
第三个要说的就是foreach完成类型转换操作,这种体现可能通过如上的例子看不出任何效果,但是对于ArrayList之类的数据集来说,这种操作就显得比较突出。

详细可查看这篇帖子     http://bbs.itheima.com/thread-36444-1-2.html

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
朱相锟 发表于 2013-3-2 18:41
foreach循环主要针对数组使用,楼主问为什么有了for循环之后,还会有foreach循环?那是因为for循环写起来很 ...

这般说来,大部分还是使用foreach 了
回复 使用道具 举报
康晓璞 发表于 2013-3-2 19:40
(1)循环语句是编程的基本语句,在C#中for语句,还提供了foreach语句来实现循环
(2)对于继承了IEnumera ...

学习了:handshake
回复 使用道具 举报
余攀 发表于 2013-3-2 20:52
这般说来,大部分还是使用foreach 了

见笑了- - 这是php的-,我怕打字说不清楚从网上直接贴来一段话没细看- - 认真说来 for比foreach常用
区别:
for 你先要给初值,末值和步长

foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值

string[] a=new string[]{"a","b"}

for(i=0;i<a.length;i++)
{
Response.write(a.ToString())
}

foreach(string b in a)
{
Response.write b
}

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
朱相锟 发表于 2013-3-2 21:19
见笑了- - 这是php的-,我怕打字说不清楚从网上直接贴来一段话没细看- - 认真说来 for比foreach常用
区别 ...

大哥的帮助,小弟哪敢贱笑呢{:2_40:},多谢指点了。不过您还是马虎了,Response.write b
分号丢了,哈哈:handshake
回复 使用道具 举报
for循环主要用在在数组遍历的时候,foreach用于字符串分隔
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马