我有一个函数,其中我为类创建了一个对象,在函数内部使用它并将其返回给调用函数。
Myobj read(string s)
{
Myobj obj = new Myobj ();
..................
........................
return obj
}
在这种情况下,我应该强行处理我创建的对象。
我应该何时使用析构函数,处理,最终确定
答案 0 :(得分:0)
取决于。
如果您的对象创建非托管资源(如位图,流等),那么它应该实现IDisposable
并拥有 Finalizer ,以便可以清理这些资源。
如果没有..那么垃圾收集器会在决定它时收集它。
本网站,MSDN等有很多问题/答案可以回答这个问题。大多数书籍也会在某些时候处理这个问题。
以下是StackOverflow上的一些问题,可以更详细地回答您的问题:
Proper use of the IDisposable interface
答案 1 :(得分:0)
您需要担心Dispose()/ IDisposable的唯一原因是您正在处理内存以外的资源。这包括数据库连接,套接字,GDI资源,文件流和其他一些东西。如果您只有一个POCO(普通的旧CLR对象),则不需要IDisposable。
您需要担心终结器的唯一原因是,如果您已经构建了一个实现IDisposable的类型,并且还没有.Net类将最终确定此资源。上面提到的所有内容(数据库连接,套接字,GDI资源和文件流)都有一个.Net类,它将最终确定资源,因此你不需要一个终结器,除非你正在做某事比如建立一种全新的数据库。