Muchas veces hay un método claro, que elimina todos los elementos de las colecciones, estos elementos también se eliminan.¿Llamar Clear también elimina los artículos?
igual,
toolStripMenuItem.DropDownItems.Clear();
es suficiente, o debería tener que llamar así:
foreach (ToolStripItem item in toolStripMenuItem.DropDownItems)
{
toolStripMenuItem.DropDownItems.Remove(item);
item.Dispose();
}
Editar: Bueno ToolStripItem no es un ejemplo de una pregunta, para los que dice Clear es lo suficientemente Encontré otro ejemplo, TabControl también tiene colección de elementos y método claro. Pero los TabControls pueden tener controles complejos (al menos yo los tengo), que deben ser eliminados explícitamente (incluso si están Dispuestos automáticamente en algún punto por GC, porque toman una gran cantidad de memoria). Supongo que la mejor respuesta es divo comment para desechar los elementos, y luego llamar a clear.
Creo que el autor es un desarrollador de C/C++ que "necesita" disponer de los recursos en cada función, incluso si en .NET no es una necesidad. Dudo sobre la necesidad de Finalizar/Eliminar elementos después de * Borrar * ing it de la colección. – serhio
@serhio - en .NET, sigue siendo su trabajo llamar a 'Dispose()' en los recursos de 'IDisposable', o asegurarse de que 'Dispose()' sea llamado por algún otro código. –
El uso de .NET Reflector es una buena forma de ver si 'ToolStripItemCollection.Clear()' en realidad llama a 'Dispose' en los elementos de la colección o no. Si miras la fuente desensamblada, verás que no. –