Например:
Queue<System.Drawing.SolidBrush> brushQ = new Queue<System.Drawing.SolidBrush>();
...
brushQ.Clear();
Если я явно не снимаю с очереди каждый элемент и не распоряжаюсь ими по отдельности, удаляются ли оставшиеся элементы при вызове Clear ()? Как насчет того, когда очередь собирается мусором?
Если предположить, что ответ "нет", то какова лучшая практика? Нужно ли вам всегда перебирать очередь и располагать каждый элемент?
Это может стать уродливым, особенно если вам нужно попытаться .. наконец, вокруг каждого распоряжения, в случае, если вы выбрасываете исключение.
Редактировать
Таким образом, кажется, что пользователь общей коллекции обременителен, чтобы знать, что, если элементы одноразовые (это означает, что они, вероятно, будут использовать неуправляемые ресурсы, которые не будут очищены сборщиком мусора), то:
- Когда вы удаляете предмет из коллекции, убедитесь, что вы удалили () его.
- НЕ ВЫЗЫВАЙТЕ Очистить (). Итерация по
сбор и утилизация каждого
пункт.
Может быть, в документации к родовым коллекциям следует упомянуть об этом.