Вопрос

Я предпочитаю использовать ArrayLists структур.Тогда очень легко перемещаться по списку с помощью foreach.

У меня проблема в том, что я не могу использовать foreach для изменения содержимого структур, и мне приходится использовать for и беспорядочные приведения типов.

((dataStructure)files[x]).name = here;

Есть ли более аккуратный способ сделать это?

Это было полезно?

Решение

Я знаю, это звучит упрощенно, но просто скажите нет изменяемым типам значений.

Они почти никогда правильное решение проблемы.Есть очень за немногими исключениями, но классы почти всегда путь.

Кроме того, если вы действительно используете ArrayList тогда вы уже понесете расходы на распаковку...(Как говорит Конрад, если вы можете использовать .NET 2.0, используйте дженерики.)

Если вы действительно настаиваете на использовании изменяемых структур, используйте for цикл вместо foreach.Но, пожалуйста, все равно переключитесь на занятия.

Другие советы

Да, есть:не используйте нетипизированный ArrayList, эти типы устарели в пользу универсальных типов в System.Collections.Generic.В твоем случае: List<T>.

Вы по-прежнему не можете использовать его в сочетании с foreach цикл для изменения значений структуры, но, по крайней мере, вам не нужно приводить.

Использовать универсальный версия ArrayList: List<DataStructure>.

Таким образом, все выглядит намного лучше:

files[x].name = here;

Да, бывают случаи, когда List <T> тоже бесполезно.В таких случаях сработает самый старый трюк из руководства.Вместо foreach, вы должны использовать цикл while:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top