应配置强制用于所有对象

时间:2013-12-02 04:44:41

标签: c# dispose

我有一个函数,其中我为类创建了一个对象,在函数内部使用它并将其返回给调用函数。

Myobj read(string s)
{
   Myobj obj = new Myobj ();
   ..................
   ........................
    return obj
 }

在这种情况下,我应该强行处理我创建的对象。

我应该何时使用析构函数,处理,最终确定

2 个答案:

答案 0 :(得分:0)

取决于。

如果您的对象创建非托管资源(如位图,流等),那么它应该实现IDisposable并拥有 Finalizer ,以便可以清理这些资源。

如果没有..那么垃圾收集器会在决定它时收集它。

本网站,MSDN等有很多问题/答案可以回答这个问题。大多数书籍也会在某些时候处理这​​个问题。

以下是StackOverflow上的一些问题,可以更详细地回答您的问题:

Proper use of the IDisposable interface

Do you need to dispose of objects and set them to null?

Finalize/Dispose pattern in C#

答案 1 :(得分:0)

您需要担心Dispose()/ IDisposable的唯一原因是您正在处理内存以外的资源。这包括数据库连接,套接字,GDI资源,文件流和其他一些东西。如果您只有一个POCO(普通的旧CLR对象),则不需要IDisposable。

您需要担心终结器的唯一原因是,如果您已经构建了一个实现IDisposable的类型,并且还没有.Net类将最终确定此资源。上面提到的所有内容(数据库连接,套接字,GDI资源和文件流)都有一个.Net类,它将最终确定资源,因此你需要一个终结器,除非你正在做某事比如建立一种全新的数据库。