例如:
Queue<System.Drawing.SolidBrush> brushQ = new Queue<System.Drawing.SolidBrush>();
...
brushQ.Clear();
如果我没有明确地将每个项目出列并单独处理它们,那么在调用 Clear() 时是否会处理剩余的项目?当队列被垃圾收集时怎么样?
假设答案是“否”,那么最佳实践是什么?您是否必须始终遍历队列并处理每个项目?
这可能会变得很难看,特别是如果您必须尝试..finally 围绕每个处置,以防引发异常。
编辑
因此,通用集合的用户似乎有责任知道,如果这些项目是一次性的(意味着它们可能正在使用不会被垃圾收集器清理的非托管资源),那么:
- 当你从集合中移除一个项目时,确保你 Dispose() 它。
- 不要调用 Clear()。遍历集合并处理每个项目。
也许通用集合的文档应该提到这一点。