C#中的foreach语句不会解析为IL(中间代码)代码中的foreach语句,C#
编译器会把foreach语句转换为IEnumberable接口的方法和属性。
----类P的定义
public class P
{
public string Name { get; set; }
}
----数组初始化
P[] ps=new P[]{new P{Name="ronaldo"},
new P{Name="rivaldo"},
new P{Name="backham"}};
----下面是一条简单的foreach语句
foreach(var p in ps)
{
MessageBox.show(p.Name);
}
-----它会被解释为
System.Collections.IEnumerator enumerator = ps.GetEnumerator();
while (enumerator.MoveNext())
{
P o = enumerator.Current as P;
MessageBox.Show(o.Name);
}