Есть много способов сделать то, что вы просите, и правильный путь зависит от информации, которую вы не предоставили:
- Имеет ли свойство
Name
уникально определить элементы? - Каждый элемент имеет a
Name
? - Должно ли совпадение быть точным?
- Важно лизнаете, в каком порядке элементы были первоначально добавлены в список, т. е. в порядке, в котором они появляются в исходном XML?
- Вы пытаетесь найти элементы по их
Name
или получить к ним доступ в порядке их Name
? - Насколько важно, чтобы это было эффективно?
Возможно, правильным решением будет просто использовать LINQ для поиска элемента:
ISoundSource track = mixarray
.Cast<ISoundSource>
.Where(x => x.Name == name)
.FirstOrDefault();
, который установит track
для первого элемента в списке, имя которого соответствует искомому значению, и на ноль, если совпадений не найдено.(Если вы используете List<ISoundSource>
вместо ArrayList
, вы можете опустить Cast<ISoundSource>
- одну из многих, многих причин для использования List<T>
над ArrayList
в большинстве случаев.)
Mostвремени я буду использовать Dictionary<TKey, TValue>
для такого рода вещей, но это потому, что в большинстве случаев ответы на эти вопросы да, да, да, нет, не заботятся о порядке, довольно важно.