如何在这种情况下处理资源

时间:2015-01-13 15:28:19

标签: c# garbage-collection

我有一个这样的课。

Class {

  DataTable GetDetails(){

    DataTable dt = new DataTable;

    try{
        dt = // assigning records here.
        return dt;
    }
    catch{
    }
    finally{
    }

  }
}

此方法用于其他类。 在这个场景中如何实现IDispose并且它会产生任何好的影响吗?

我是C#的新手,我刚刚读到了关于处理的内容,并且无法让自己明白 在我的情况下实施。

如何释放此DataTable?

2 个答案:

答案 0 :(得分:3)

没有理由为此类实现IDisposable。 IDisposable仅适用于非托管资源:套接字,文件句柄,GDI资源,数据库连接和委托订阅等内容。那个班级没有使用这些。

  

我怀疑是因为我传递的数据有些大,是否善于处置?

传递大量数据是无关紧要的:那仍然是内存,内存是托管资源。同样,IDisposable仅适用于非托管资源。

答案 1 :(得分:-1)

您正在返回DataTable类型实例,因此必须在使用它的类/实例中对其进行Disposed或释放。或者更改模式并返回从DataTable实例中提取的内容,并将数据表置于finally / catch中。