如果我自己实现IEnumerator接口,那么我能够(内部foreach语句)在albumsList不产生异常的情况下添加或删除项目.但是如果foreach语句使用了IEnumerator提供的albumsList,那么尝试添加/删除(在foreach内部)项目albumsList将来自导致异常:
class Program
{
static void Main(string[] args)
{
string[] rockAlbums = { "rock", "roll", "rain dogs" };
ArrayList albumsList = new ArrayList(rockAlbums);
AlbumsCollection ac = new AlbumsCollection(albumsList);
foreach (string item in ac)
{
Console.WriteLine(item);
albumsList.Remove(item); //works
}
foreach (string item in albumsList)
{
albumsList.Remove(item); //exception
}
}
class MyEnumerator : IEnumerator
{
ArrayList table;
int _current = -1;
public Object Current
{
get
{
return …Run Code Online (Sandbox Code Playgroud)