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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖创发 中级黑马   /  2012-9-14 20:30  /  1713 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 廖创发 于 2012-9-15 11:22 编辑

求foreach的用法,与for又有什么区别?与for的优缺点

评分

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

查看全部评分

3 个回复

倒序浏览
for可以不逐个遍历,比如每隔一个遍历一个,也可以从前向后遍历,从后向前,但是foreach不能从后向前遍历,只能从前向后,并且foreach只能逐个遍历。在foreach中不能向迭代变量赋值。

说明:
foreach 对象是集合。
集合的定义下边有。
像数组、List等都是集合。具体的去MSDN上查询。上边讲的很全面。
下列示例按照元素的顺序打印出一个二维数组中的各个元素的值:
using System;
class Test
{
   static void Main() {
      double[,] values = {
         {1.2, 2.3, 3.4, 4.5},
         {5.6, 6.7, 7.8, 8.9}
      };
      foreach (double elementValue in values)
         Console.Write("{0} ", elementValue);
      Console.WriteLine();
   }
}
和for循环的区别:
for循环油条件判断,可以限制执行条件。foreach没有。对集合对象的遍历,foreach更常用。

评分

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

查看全部评分

回复 使用道具 举报
怎么说呢,foreach好像就是for的一个子集,foreach就是用来遍历(从头到尾读取)一个集合类型(比如数组)里面元素
如:
int[] arr1=new int[5]{23,4,35,3,4,12};//定义一个数组
foreach(int i in arr1)
{
if(i>10)
console.writeLine(i);  //遍历大于10的数并输出
}
//如果用for语句来实现
for(int i=0;i<arr1.Length;i++)
{
if(arr1[i]>10)
{
console.writeLine(arr1[i]);
}
}
其实吧,区别不大,用foreach实现的for都可以实现,只是稍微简洁了点,不管怎么样,最终达到结果就可以,过程并不重要,所以没必要在这个问题上有所疑虑......

评分

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

查看全部评分

回复 使用道具 举报
foreach循环用来迭代集合中的每一项,其内部是通过调用IEnumerable接口的GetEnumerator()方法来实现的遍历。
注意,foreach循环不能改变集合中各项的值,所以下面的代码不会被编译:
  1. foreach(int temp in arrayOfInt)
  2. {
  3.     temp++;
  4.     Console.WriteLine(temp);
  5. }
复制代码
如果需要迭代集合中的各项,并改变它们的值,就可以使用for循环,它提供了更为灵活的方式。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马