Вы должны утилизировать любой из управляемых объектов, которые реализуют IDisposable
.
Вы не сможете вызвать Dispose
для объектов, которые не реализуют IDisposable
, поэтому вам нужно проверить это. (Очевидно, что если все возможные экземпляры / потомки MyObject
всегда будут реализовывать IDisposable
, тогда вам не понадобится эта проверка.)
Нет необходимости устанавливать сам список на null
.
В общем случае, я бы, вероятно, переписал цикл, чтобы он выглядел примерно так:
if (disposing)
{
foreach (var o in objects)
{
var d = o as IDisposable;
if (d != null) d.Dispose();
}
}
(Кстати, если ваш класс на самом деле не содержит IDisposable
объектов или неуправляемых ресурсов, то вам, вероятно, вообще не нужно реализовывать IDisposable
или финализатор.)