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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mosuge7 中级黑马   /  2013-5-7 14:20  /  1847 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 mosuge7 于 2013-5-7 19:28 编辑

foreach和for有啥区别?举例说明下哈。

评分

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

查看全部评分

6 个回复

正序浏览
高文咪 发表于 2013-5-7 15:09
我一般都是前台方法中用for循环;后台程序中实例有多个对象返回时的那种list形式用foreach循环;希望可以帮 ...

     谢谢!:)
回复 使用道具 举报
郎吉祥 发表于 2013-5-7 16:24
就我现在知道的,c#中
第一点,for循环的时候,可以知道循环了几次,比如for(int  i=0;……;i++)。而fo ...

嗯嗯,非常感谢!我懂了。
回复 使用道具 举报
zms2100 发表于 2013-5-7 14:43
这个...............前者是高级for循环(应用于集合或数组,但要求遍历的对象是明确的,比如一个数组已经装 ...

你写的有的不是很理解,希望以后我能理解,非常感谢!
回复 使用道具 举报
就我现在知道的,c#中
第一点,for循环的时候,可以知道循环了几次,比如for(int  i=0;……;i++)。而foreach遍历string类型的时候是不知道的,,foreach(string str in 数组名),必须自己建个变量来检测,在循环体中加个“变量++;”这在必须知道循环次数的时候for循环相对好一点。
第二点:遍历的时候,foreach比for简单。 而且不需要知道具体多少个元素。
List<string> list = new List<string>();
           list.Add("asf");
            list.Add("bug");
            list.Add("wer");
            foreach(string str in list)
            {

                Console.WriteLine(str);
        }
第三点、在数据库中传文本文件时,用foreach相当方便。再循环中,可以把每行拆成一个数组,我表达能力有限,就举个例子比如
//现在假设list是一个多行字符串的数组
            foreach(string str in list)
            {
                string[] segs=str.Split('这里为分隔符');
                string str1=segs[0];
                string str2=segs[1];
                string str3=segs[2];
               
        }
总结来说的话,遍历的时候用foreach,不遍历的时候用for

评分

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

查看全部评分

回复 使用道具 举报
我一般都是前台方法中用for循环;后台程序中实例有多个对象返回时的那种list形式用foreach循环;希望可以帮到你!
回复 使用道具 举报
本帖最后由 zms2100 于 2013-5-7 14:46 编辑

这个...............前者是高级for循环(应用于集合或数组,但要求遍历的对象是明确的,比如一个数组已经装满了元素),这个高级for循环是基于迭代器产生的(应该是在集合的迭代器章节也会讲它们的区别)。
for语句: 称呼做一般for循环,用来遍历数组或实现一些重复的操作。举例的话 :  比如遍历已有的数组int[] i = {2,4,6,3,56,1,5};
高级for循环:  for(int x : i ){   System.out.println( x );   }      //每次打印一个数组中的元素。
一般for循环:  for(int y = 0; y<i.length;y++){   System.out.println( i[y] );   }          //也是打印一个元素,不过是用获取对应数组角标的方法实现。
区别:   高级for不能实现的, 遍历对象不明确: int[] i = new int[5];  (给数组添加元素,加入5个 1 等)。
一般for :  for(int y = 0; y<i.length; y++){   
    i[y] = 1;
     System.out.println(  i[y] );   }               
//就是这个操作对象本来还没确定,高级for循环就不能实现(因为跟迭代器类似,它们遍历或操作的原理是要取出元素,连元素都没有,就.............O(∩_∩)O~)

评分

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

查看全部评分

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