.net - C# 中数据表数组的垃圾收集处理

标签 .net arrays garbage-collection datatable dispose

我是 GC 新手, 如果我想释放一个数据表数组,在其所有数据表上调用 dispose() 就足够了吗?我是否也需要将 databale 数组设置为 null ?或每个数据表?

这够了吗?:

 DataTable[] myTables = null;
             try
             {
                 myTables = DB.GetTables();

                 // use myTables....
             }
             finally
             {
                 // Dispose Data Tables
                 if (myTables != null)
                 {
                     foreach (DataTable dt in myTables)
                     {
                         if (dt != null)
                             dt.Dispose();
                     }
                 }
             }

最佳答案

对于垃圾收集,您无需执行任何操作。

由于 DataTable 实现了 IDisposable,因此最好对所有这些调用 Dispose() (就像您正在做的那样)。仅在极少数情况下才需要设置对 null 的引用。不在这里。

但是 Dispose() 是关于释放托管和非托管资源,而不是关于垃圾回收。
对于 DataTbales,Dispose() 实际上并不是必需的,但您不想费心去了解这一点。如果类有 Dispose() 成员,请调用它。

关于.net - C# 中数据表数组的垃圾收集处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117589/

相关文章:

java - 什么时候触发 Full GC?

c# - Windows7 Installer优先使用C#如何在安装过程中将其移回?

c# - WPF:MVVM - 如果命令为空则禁用按钮

Javascript 返回 "matched"数组在数组中的位置索引

Javascript拼接不拼接

javascript - Object.observe/unobserve 如何与垃圾回收交互?

.net - 程序集代码库 : when is it no file-URI?

.net - System.IO.File.Exists(@"C:\Windows\System32\SnippingTool.exe") 返回 false

arrays - 如何通过添加零来调整/扩展矩阵?

java - 在没有 -XX 的情况下卸载标准输出日志中的类消息 :+CMSClassUnloadingEnabled