黑马程序员技术交流社区

标题: for循环和foreach遍历区别在哪,使用范围怎么理解 [打印本页]

作者: 赵贺景    时间: 2014-5-6 18:46
标题: for循环和foreach遍历区别在哪,使用范围怎么理解
本帖最后由 赵贺景 于 2014-5-6 20:45 编辑

for循环和foreach遍历区别在哪,使用范围怎么理解
两个都是循环语句,但是句式不同,使用方法也不同,
在使用上有什么差别,注意事项有哪些?

作者: 追梦无悔    时间: 2014-5-6 19:08
本帖最后由 追梦无悔 于 2014-5-6 19:09 编辑

for和foreach的作用都是遍历。不同的是,能通过foreach遍历的必须直接或间接实现IEnumerable或IEnumerable接口
作者: 8点的太阳    时间: 2014-5-6 19:32
除了楼上所说的for循环能够修改值比较灵活和通用,而foreach循环使用方便但是不能够在循环中修改值有局限性
作者: 小狸    时间: 2014-5-6 19:42
按照我的理解foreach和for都具有遍历的功能
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace _for
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Console.WriteLine("for");
  12.             int [] i =new int[]{1,2,3,4,5,6,7,8};
  13.             for (int j = 0; j < i.Length; j++) {
  14.                 Console.Write(i[j]+" ");           
  15.             }
  16.             Console.WriteLine();
  17.             Console.WriteLine("foreach");
  18.             foreach(int j in i){
  19.                 Console.Write(j+" ");
  20.             }
  21.             Console.ReadLine();
  22.         }

  23.     }
  24. }
复制代码
foreach迭代的是集合中的每一项.当然C#数组也是集合.
但是,foreach (var temp in array) temp的值是只读属性的,也就是说它不能像for那样对遍历对象进行操作例如:
  1.      int [] a = new int[] { 1, 2,3,4,5,6 };
  2.             foreach (int b in a)
  3.             {
  4.                  b += 1;  //error
  5.             }

  6.             for (int i = 0; i < a.Length; i++)
  7.             {
  8.                 a[i] += 1;
  9.             }
复制代码

foreach比for好在它的性能优势,效率比for高,并且它并不需要知道数组的长度,范围;
那么要访问数组下标的时候用for,要遍历对象数组时用foreach比较好


作者: 赵贺景    时间: 2014-5-6 19:49
在固定长度或长度不需要计算的时候for循环效率高于foreach.

在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便.
foreach是只读性质的 不能修改内容 而for可以计算 是吧




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