我创建了一个实现IEnumerable(T)和自定义IEnumerator(T)的自定义集合。
我还在自定义集合中添加了一个 Add() 方法,如下所示:
public void Add(T item)
{
T[] tempArray = new T[_array.Length + 1];
for (int i = 0; i < _array.Length; i++)
{
tempArray[i] = _array[i];
}
tempArray[_array.Length] = item;
_array = tempArray;
tempArray = null;
}
该实现基于此示例http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx。
当我使用我的数组执行 foreach 循环时,我想防止集合修改(例如在循环内调用 Add())并抛出一个新的 InvalidOperationException。我怎么能做到这一点?