Ich implementiere IDisposable für eine Klasse und beim Entsorgen gibt es eine interne Liste von Einwegobjekten. Sollte ich dieses Objekt durch Schleifen durchgehen?Wie eine Liste von Einwegobjekten zu entsorgen?
public Class MyDisposable
Implements IDisposable
private _disposbaleObjects as new List(of OtherDisposables)
Public Overloads Sub Dispose() Implements System.IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
? Should I dispose the the list like this ?
For Each obj In _disposbaleObjects
obj.dispose()
Next
End If
End If
Me.disposedValue = True
End Sub
End Class
Das Schlüsselwort "Overloads" ist falsch, entfernen Sie es. Die VB.NET-IDE erzeugt für 99,9% aller IDisposable-Implementierungen einen unangemessenen Standardcode. Verschieben Sie den Entsorgungscode einfach in Sub Dispose() und entfernen Sie die geschützte Methode und SuppressFinalize. –
@Hans, können Sie den Grund für Ihren Vorschlag angeben? – Joker
Der Standardcode ist nur dann geeignet, wenn Sie einen Finalizer implementieren. Das ist extrem selten. –