类型与异常处理的深入剖析
资源管理与类型相关特性
using 语句与 try/finally 块
using 语句为 try/finally 块提供了语法上的快捷方式。在 using 语句中,可以通过逗号分隔来实例化多个变量,但这些变量必须是同一类型且实现了 IDisposable 接口。为确保使用同一类型,数据类型只需指定一次,而非在每个变量声明前都指定。
垃圾回收与终结
IDisposable 模式包含一个重要调用,如 Close() 方法中可能包含对 System.GC.SuppressFinalize() 的调用,其目的是将对象实例从终结(f - 可达)队列中移除。f - 可达队列包含所有准备进行垃圾回收且有终结实现的对象。运行时在调用对象的终结方法之前,无法对带有终结器的对象进行垃圾回收。垃圾回收本身不会调用终结方法,而是将终结对象的引用添加到 f - 可达队列,这反而会延迟垃圾回收。因为 f - 可达队列是一个“引用”列表,只有在调用终结方法并从队列中移除对象引用后,对象才会被视为垃圾。
以下是一个抑制终结的示例代码:
// ...
public void Close()
{
if(Stream != null)
{
Stream.Close();
}
if(File != null)
{
File.Delete();
}
// Turn off calling the finalizer
System.GC.SuppressFinalize(t
超级会员免费看
订阅专栏 解锁全文
3837

被折叠的 条评论
为什么被折叠?



