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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 985127948 中级黑马   /  2012-12-13 06:40  /  2078 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

foreach的具体用法和特点谁给详细的解答一下。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
  1.             int[] arr = { 1, 2, 3 }; foreach (int i in arr)
  2.             {
  3.                 System.Console.WriteLine(i);
  4.             }
  5.             string[] ctt = { "一", "二", "三" }; foreach (string i in ctt)
  6.             {
  7.                 System.Console.WriteLine(i);
  8.             }
  9.             Console.ReadKey();
复制代码
要在数组中找什么类型的值就定义一个相应类型的变量,然后foreach会从数组第一个元素开始遍历所有元素。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
int[] nArray = new int[100];
foreach( int i in nArray )
{
循环语句
}
首先,foreach比for循环更加简洁和高效,其次不用考虑数组起始索引是几,很多人可能从其他语言转到C#的,那么原先语言的起始索引可能不是1,例如VB或者Delphi语言,那么在C#中使用数组的时候就难免疑问到底使用0开始还是用1开始呢,那么使用foreach就可以避免这类问题。
但是在foreach语句中有两个限制,第一不能修改枚举成员,其次不要对集合进行删除操作。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
foreach循环用于遍历集合中元素,集合是一组对象。
foreach的基本形式如下:
foreach (type loopvar in collection) statement;
其中type loopvar 是指迭代变量的类型和名称,当foreach执行遍历的时,它将接受集合中下一个元素的值,被遍历的集合有collection指定。
这里以数组时的情形为例来说foreach的工作原理:当循环开始的时候,获得数组中的第一个元素并将其赋值给loopvar.随后的每次迭代获得数组中的下一个元数并将其存储在loopvar中。foreach循环在数组中没有可获得的元数时结束。因此foreach循环从头到尾的遍历数组,并且一次获得数组中的一个元数。在foreach循环中迭代变量loopvar是只读的,不能通过给迭代变量赋一个新值来改变数组中的元数。
下面用一个foreach的简单示例来说明:
  1. int Sum=0;
  2. int Nums= new int [10];
  3. for(int i=0;i<10;i++)
  4. {
  5.     Nums[i]=i;
  6. }
  7. foreach ( int x in Nums)
  8. {
  9.     Sum+=x;
  10. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
c#中使用foreach和for都可以用来遍历,foreach的执行效率比for高。foreach是按照从左到右的顺序依次直接取得集合中的各个元素,而for循环是通过控制元素下标取得元素位置进而读取元素;foreach可以在不用知道长度的情况下进行遍历,但是for一般要知道长度才能遍历;但是foreach也有它的弊端,foreach仅限对数据进行读取,无法进行修改、删除等操作,而for循环可以。如下:
int[] num = { 2, 7, 35, 98, 74, 26 };
   foreach (int i in num)
       {
             //i++;//不能对i进行操作
        Console.WriteLine(i); //把取得的i打出来
     }
        Console.ReadKey();

        for (int i=0;i<num.Length;i++)
            {
                num[i]++; //这里可以对取得值进行操作
          Console.WriteLine(num[i]);
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
foreach实现的前提是:实现IEnumerable 或者 实现自定返回值为IEnumerable(yield return)
用法:if you have implemented IEnumerable, foreach(type typename in classname)
else foreach(type typename in classname.iteratormethod)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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