foreach

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string []friendNames = { "sssss", "ddddd", "ccccc" };
            Console.WriteLine("Here are {0} of my friend:", friendNames.Length);
            foreach (string f in friendNames)
            {
                Console.WriteLine(f);
            }
            Console.ReadKey();
        }
    }
}

foreach语句是在C#中新引入的,C和C++中没有这个语句,而Visual Basic的程序员应该对它不会陌生。它表示收集一个集合中的各个元素,并针对各个元素执行内嵌语句。语句的格式为:
 
foreach(type identifier in expression)embedded-statement
 
其中类型(type)和标识符(identifier)用来声明循环变量,表达式(expression)对应集合。每执行一次内嵌语句,循环变量就依次取集合中的一个元素代入其中。在这里,循环变量是一个只读型局部变量,如果试图改变它的值或将它作为一个ref或out类型的参数传递,都将引发编译时的错误。
 
foreach语句中的expresssion必须是集合类型,如果该集合的元素类型与循环变量类型不一致,则必须有一个显示定义的从集合中的元素类型到循环变量元素类型的显式转换。
 
集合的概念相信大家都不陌生,它表示一组相同或相似的数据项总的描述。那么在C#中,究竟什么样的类型算是集合类型呢?我们从语法上给出集合类型的定义:
 
●该类型必须支持一个形为Getenumerator()的公有的非静态方法,该方法的返回类型为结构、类或接口。
 
●形为GetEumerator()的方法返回的结构、类或接口应当包含一个公有的非静态的方法MoveNext(),该方法的返回类型为布尔型。
 
●形为GetEumerator()的方法返回的结构、类或接口应当包含一个公有的非静态的属性Current,该属性可以读出。
 
如果一个类型同时满足以上三个条件,该类型称为集合类型。Current属性的类型叫作该集合类型的元素类型。
 
我们姑且不论集合类型的具体形式,只从foreach语句的使用角度举一个例子。
 
假设Prime是一个满足条件的集合类型,它的元素类型为0到1000以内的质数。MyInt是我们自定义的一个类型,其范围为200到300之间的整数。下面这段程序用于在屏幕上打印出从200到300以内的所有质数。
 
程序清单8-5:
 

using System;
using System.Collections;
class Test
{
  public static void Main()
  {
    Console.WriteLine("See the prime number:");
    foreach(MyInt x in Prime)
       Console.WriteLine("{0}",x);
  }
} 


顺便说一句,数组类型是支持foreach语句的,对于一维数组,执行顺序是从下标为0的元素开始,一直到数组的最后一个元素;对于多维数组,元素下标的递增是从最右边那一维开始的,依次类推。
 
同样,break和continue可以出现在foreach语句中,功能不变。

本文来自编程入门网:http://www.bianceng.cn/Programming/csharp/200709/4403.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值