如何处理一次性物品清单?

8 .net vb.net idisposable

我正在为一个类实现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)