30、类型与异常处理的深入剖析

类型与异常处理的深入剖析

资源管理与类型相关特性
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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值