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

本文关键字:资源 何处置 这种情况下 | 更新日期: 2023-09-27 18:37:18

>我有这样的类。

Class {
  DataTable GetDetails(){
    DataTable dt = new DataTable;
    try{
        dt = // assigning records here.
        return dt;
    }
    catch{
    }
    finally{
    }
  }
}

此方法在其他类中使用。在这种情况下,如何实现IDispose,它会产生任何好的影响吗?

我是 C# 的新手,我只是阅读了有关处置的内容,无法明确说明这一点在我的情况下实施。

如何释放此数据表?

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

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

我的疑问是,既然我传递了大量的数据,处理好不好?

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

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