C#中foreach语句不会解析为IL代码中的foreach语句。
C#编译器会把foreach语句转换为IEnumerable接口的方法和属性。
下面是一个简单的foreach语句,它迭代persons数组中的所有元素,并逐个显示他们:
foreach (Person p in persons)
{
Console.WriteLine(p);
}
Foreach语句会解析为下面的代码段。
首先,调用GetEnumerator()方法,获得数组的一个枚举。在while循环中—只要MoveNext()返回true—用
Current属性访问数组中的元素:
IEnumerator enumerator = persons.GetEnumerator();
While(enumerator.MoveNext())
{
Person p=(Person)enumerator.Current;
Console.WriteLine(p);
}