黑马程序员技术交流社区

标题: for结构和foreach 结构的使用 [打印本页]

作者: 余攀    时间: 2013-3-2 18:33
标题: for结构和foreach 结构的使用
本帖最后由 余攀 于 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.             }
复制代码

作者: 朱相锟    时间: 2013-3-2 18:41
foreach循环主要针对数组使用,楼主问为什么有了for循环之后,还会有foreach循环?那是因为for循环写起来很麻烦不是么?php里的数组长度是动态的,如果你要对一个数组进行什么操作,用for循环是不是还要把数组的长度先count出来,然后语句里面还要写入循环变量来(如:一般用$i,$j等)。比起foreach,for是不是麻烦很多?
作者: 康晓璞    时间: 2013-3-2 19:40
(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

作者: 余攀    时间: 2013-3-2 20:52
朱相锟 发表于 2013-3-2 18:41
foreach循环主要针对数组使用,楼主问为什么有了for循环之后,还会有foreach循环?那是因为for循环写起来很 ...

这般说来,大部分还是使用foreach 了
作者: 余攀    时间: 2013-3-2 20:55
康晓璞 发表于 2013-3-2 19:40
(1)循环语句是编程的基本语句,在C#中for语句,还提供了foreach语句来实现循环
(2)对于继承了IEnumera ...

学习了:handshake
作者: 朱相锟    时间: 2013-3-2 21:19
余攀 发表于 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
}
作者: 余攀    时间: 2013-3-2 21:33
朱相锟 发表于 2013-3-2 21:19
见笑了- - 这是php的-,我怕打字说不清楚从网上直接贴来一段话没细看- - 认真说来 for比foreach常用
区别 ...

大哥的帮助,小弟哪敢贱笑呢{:2_40:},多谢指点了。不过您还是马虎了,Response.write b
分号丢了,哈哈:handshake
作者: luxun1912    时间: 2013-3-5 21:27
for循环主要用在在数组遍历的时候,foreach用于字符串分隔




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2