求:C#中 foreach() 的用法,

说的越详细越好,根据答案的满意程度,我会提高奖励的。。

最好能给一个比较全的例子,他和For循环的区别是什么,什么时候必须用这个?

说明:
foreach 对象是集合。
集合的定义下边有。
像数组、List等都是集合。具体的去MSDN上查询。上边讲的很全面。
下列示例按照元素的顺序打印出一个二维数组中的各个元素的值:
using System;
class Test
{
static void Main() {
double[,] values = {
{1.2, 2.3, 3.4, 4.5},
{5.6, 6.7, 7.8, 8.9}
};
foreach (double elementValue in values)
Console.Write("{0} ", elementValue);
Console.WriteLine();
}
}
和for循环的区别:
for循环油条件判断,可以限制执行条件。foreach没有。对集合对象的遍历,foreach更常用。

以下是MSDN上的。查看网址:
http://msdn.microsoft.com/zh-cn/library/ms141724.aspx

foreach 语句用于枚举一个集合的元素,并对该集合中的每个元素执行一次相关的嵌入语句。

foreach-statement:(foreach 语句:)
foreach ( type identifier in expression ) embedded-statement(foreach ( 类型 标识符 in 表达式 ) 嵌入语句)
foreach 语句的类型和标识符声明该语句的迭代变量。迭代变量相当于一个其范围覆盖整个嵌入语句的只读局部变量。在 foreach 语句执行期间,迭代变量表示当前正在为其执行迭代的集合元素。如果嵌入语句试图修改迭代变量(通过赋值或 ++ 和 -- 运算符)或将迭代变量作为 ref 或 out 参数传递,则将发生编译时错误。

foreach 语句的表达式的类型必须是集合类型(下面有它的定义),且必须有一个从该集合的元素类型到迭代变量的类型的显式转换(第 6.2 节)。如果该表达式具有 null 值,则将引发 System.NullReferenceException。

如果类型 C 实现了 System.Collections.IEnumerable 接口,或者能够满足下列(有关实现集合模式的)条件,就称它是集合类型:

C 包含一个 public 实例方法,它带有签名 GetEnumerator(),且返回值属于结构类型、类类型或接口类型(后文中用 E 表示该返回值的类型)。
E 包含一个 public 实例方法,此方法具有签名 MoveNext() 和返回类型 bool。
E 包含一个名为 Current 的 public 实例属性,此属性允许读取当前值。此属性的类型称为该集合类型的元素类型。
一个实现 IEnumerable 的类型也是集合类型,即使它不满足上述条件。(这是可能的,如果该类型通过“显式接口成员实现”的方式实现某些 IEnumerable 成员,关于该方式详见第 13.4.1 节中的说明。)

System.Array 类型(第 12.1.1 节)是集合类型,而由于所有的数组类型都从 System.Array 派生,foreach 语句中允许使用任何数组类型表达式。foreach 按如下顺序遍历数组的元素:对于一维数组,按递增的索引顺序遍历元素,从索引 0 开始,到索引 Length – 1 结束。对于多维数组,按这样的方式遍历元素:首先增加最右边维度的索引,然后是它的左边紧邻的维度,依此类推直到最左边的那个维度。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-07
List <int > a=new List<int>();
a.add(1);
a.add(2);
foreach(int i in a)
{

}本回答被提问者和网友采纳
第2个回答  2011-01-08
foreach循环中不允许修改集合的元素。

你换成for循环吧