我正在为一个类实现IDisposable,并且在处理时有一个一次性对象的内部列表.我应该通过循环来处理这些对象.
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
Run Code Online (Sandbox Code Playgroud)
aba*_*hev 12
是的,遍历列表并处理每个项目.
你也可以写一个扩展方法:
public static void Dispose(this IEnumerable<IDisposable> collection)
{
foreach (IDisposable item in collection)
{
if (item != null)
{
try
{
item.Dispose();
}
catch (Exception)
{
// log exception and continue
}
}
}
Run Code Online (Sandbox Code Playgroud)
并将其命名为您的列表
_disposbaleObjects.Dispose()
Run Code Online (Sandbox Code Playgroud)