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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 赵贺景 于 2014-5-6 20:45 编辑

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

5 个回复

倒序浏览
本帖最后由 追梦无悔 于 2014-5-6 19:09 编辑

for和foreach的作用都是遍历。不同的是,能通过foreach遍历的必须直接或间接实现IEnumerable或IEnumerable接口
回复 使用道具 举报
除了楼上所说的for循环能够修改值比较灵活和通用,而foreach循环使用方便但是不能够在循环中修改值有局限性
回复 使用道具 举报
按照我的理解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-7 07:35

评分

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

查看全部评分

回复 使用道具 举报
在固定长度或长度不需要计算的时候for循环效率高于foreach.

在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便.
foreach是只读性质的 不能修改内容 而for可以计算 是吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马