日期:2014-05-20  浏览次数:20836 次

foreach语句的内存使用问题~
代码很简单
                  static   void   Main()
                  {
                          ArrayList   MyArray   =   new   ArrayList();
                          for   (int   i   =   0;   i   <   10;   i++)
                                  MyArray.Add(i);
                          foreach   (object   obj   in   MyArray)
                          {
                                  Console.WriteLine(obj);
                          }
                  }

Myarray   里面有10   个对象~
但我执行foreach   的时候是不是额外创建10   个实例?

------解决方案--------------------
foreach (object obj in MyArray)
{
Console.WriteLine(obj);
}

等价于:

IEnumerater ietr = MyArray.GetEnumerater();
while(ietr.MoveNext())
{
Console.WriteLine(ietr.Current);
}


仅仅是用了一个IEnumerater 接口来帮助访问 MyArray 的内容。