Исключение во время итерации по коллекции и удаления элементов из этой коллекции [дубликаты]

На этот вопрос уже есть ответ:

Каков наилучший способ изменить список в цикле «foreach»? 11 ответов

Я удаляю элемент из ArrayList в цикле foreach и получаю следующее исключение.

Collection была изменена; операция перечисления может не выполняться.

Как я могу удалить элементы в foreach,

РЕДАКТИРОВАТЬ Может быть один элемент для удаления или два или все.

Следующий мой код:

/*
 * Need to remove all items from 'attachementsFielPath' which does not exist in names array.
 */

try
{
    string attachmentFileNames = txtAttachment.Text.Trim(); // Textbox having file names.
    string[] names = attachmentFileNames.Split(new char[] { ';' });

    int index = 0;

    // attachmentsFilePath is ArrayList holding full path of fiels user selected at any time.
    foreach (var fullFilePath in attachmentsFilePath)
    {
        bool isNeedToRemove = true;

        // Extract filename from full path.
        string fileName = fullFilePath.ToString().Substring(fullFilePath.ToString().LastIndexOf('\\') + 1);

        for (int i = 0; i < names.Length; i++)
        {
        // If filename found in array then no need to check remaining items.
        if (fileName.Equals(names[i].Trim()))
        {
            isNeedToRemove = false;
            break;
        }
        }

        // If file not found in names array, remove it.
        if (isNeedToRemove)
        {
        attachmentsFilePath.RemoveAt(index);
        isNeedToRemove = true;
        }

        index++;
    }
}
catch (Exception ex)
{
    throw ex;
}

EDIT: Можете ли вы также совет по коду. Нужно ли разбивать его на небольшие методы, обработку исключений и т. Д.

Недопустимый аргумент исключение при создании общего списка из ArrayList

foreach (var fullFilePath in new List<string>(attachmentsFilePath))

{

alt text http://img641.imageshack.us/img641/1628/invalidargument1.pn

Когда я используюList<ArrayList> Исключением является аргумент '1': невозможно преобразовать из 'System.Collections.ArrayList' в 'int'

attachmentsFilePath объявлен так

ArrayList attachmentsFilePath = new ArrayList();

Но когда я это так объявил, проблема решилась

List<ArrayList> attachmentsFilePath = new List<ArrayList>();

Ответы на вопрос(7)

Ваш ответ на вопрос