微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 我应该有返回Disposable实例列表的方法吗?

我有一个类,需要处理它的实例.我也有几个类来生成这些实例,可以是单独的,也可以是它们的列表.

我应该返回IList< MyClass>从我的方法或我应该创建一个MyClassCollection类,它也是一次性的,并返回这个?

编辑:

我问的主要原因是我最终做了很多这样的事情:

IList<MyObject> list = GetList();
foreach(MyObject obj in list)
{
     //do something
     obj.dispose();
}

似乎我会做得更好:

using (IList<MyObject> list = GetList())
{
     foreach(MyObject obj in list)
     {
     //do something

     } 
}

解决方法

在这些情况下,容器类可能更清晰.然后,您可以继续使用标准集合类,并且您必须更明确地知道项目何时需要在最后处置.
public class ListScope : Idisposable
{
    private IList list;
    public ListScope(IList list)
    {
        this.list = list;
    }

    #region Idisposable Members

    public void dispose ()
    {
        foreach ( object o in this.list )
        {
            Idisposable disposable = ( o as Idisposable );
            if (disposable != null)
                    disposable.dispose ();
        }
    }

    #endregion
}

你可以用作:

using ( new ListScope ( list ) )
{
   // Do stuff with list
}

原文地址:https://www.jb51.cc/csharp/243707.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐