¿Debería utilizarse "Disposición" solo para los tipos que contienen recursos no administrados?

Hace poco tuve una discusión con un colega sobre el valor deDispose y tipos que implementanIDisposable.

Creo que hay valor en la implementación.IDisposable Para los tipos que deben limpiarse lo antes posible,incluso si no hay recursos no administrados para limpiar.

Mi colega piensa diferente; implementarIDisposable Si no tiene ningún recurso no administrado, no es necesario, ya que su tipo eventualmente será recolectado como basura.

Mi argumento fue que si tenías una conexión ADO.NET que querías cerrar lo antes posible, entonces implementasIDisposable yusing new MyThingWithAConnection() tendría sentido Mi colega respondió que, bajo las coberturas, una conexión ADO.NET es unarecurso no administrado. Mi respuesta a su respuesta fue queEn última instancia, todo es un recurso no administrado..

Soy consciente de lapatrón desechable recomendado donde turecursos gestionados y no gestionados de forma gratuita siDispose se llama perosolo libere recursos no administrados si se llama a través del finalizador / destructor (y hace un blog hace un rato sobre cómoalertar a los consumidores del uso indebido de sus tipos IDisponibles)

Entonces, mi pregunta es, si tiene un tipo que no contiene recursos no administrados, ¿vale la pena implementarlo?IDisposable?

Respuestas a la pregunta(15)

Su respuesta a la pregunta