Последствия отказа от использования IDisposables могут варьироваться от незначительного падения производительности до сбоя вашего приложения.
Объект Brush в вашем примере будет очищен GC, когда он захочет. Но у вашей программы не было бы такого преимущества дополнительной памяти, которую вы могли бы получить, очистив ее раньше. Если вы используете много объектов Brush, это может стать значительным. GC также более эффективен при очистке объектов, если они не были вокруг очень долго, потому что это сборщик мусора поколений.
С другой стороны, последствия неиспользования объектов подключения к базе данных могут означать, что у вас очень быстро заканчиваются подключения к базе данных в пуле, что приводит к сбою приложения.
Либо использовать
using (new DisposableThing...
{
...
}
Или, если вам нужно удерживать ссылку на IDisposable в вашем объекте в течение всего времени его жизни, внедрите IDisposable для вашего объекта и вызовите метод Dispose для IDisposable.
class MyClass : IDisposable
{
private IDisposable disposableThing;
public void DoStuffThatRequiresHavingAReferenceToDisposableThing() { ... }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
//etc... (see IDisposable on msdn)
}