欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 »  .NET本质论第一卷:公共语言运行库教程 » 正文

本教程章节列表

资源的自动释放-C#中using的使用

创建时间:2012年12月04日 21:44  阅读次数:(4421)
分享到:
实现该接口的类标明它们需要显式的清理。一旦引用的对象不再需要,就要调用IDisposable.Dispose方法,这最终是客户端程序员的工作。因为你的Disposp方法很可能与Finalize方法执行同样的工作,在你Dispose方法内可以通过调用System.GC.SuppressFinalize方法,以消除这种冗余终结行为,如示例5.20所示。
示例:5.20,实现Dispose


示例5.21是一个客户端在使用完对象后,显式地在该对象上调用Dispose力法。为了确保即使是在遇到异常的时候,对象的使用者总是会调用Dispose方法,c#编程语言提供了一个构件,它封装了带有终结处理程序(隐式地为你调用Dispose)的IDisposable兼容的(IDisposable-compatible)变量声明。这个构件就是c#的using语句。

示例5.21引用及确定的终结
class App{
static void Main(){
Transaction tx=new Transaction();
Console.WriteLine(tx.ID);
tx.Dispose(); //事务的同步失没败
}
}

图5.18展示了uslne语句的语法。using语句允许程序员声明一个或多个变量,它们的IDisposable.Dispose方法将会被自动调用。资源获得从句的语法与局部变量声明语句的语法很相似。你可以声明多个变量,但每个变量的类型都必须相司。示例5.22显示了uslng语句的—个简单用法。注意在该示例中,因为using语句与IDisposable兼容的对象一起被使用,所以,编译器会发射代码,确保即使是在遇到没有被处理的异常或者其他方法终结(例如,一个return语句)时,Dispose方法也会被调用。


示例5.22 C#的using语句
Class App{
Static void Main()
{
Using Transaction tx=new Transaction(){
Console.WriteLine(tx.id);
} //这里自动调用IDisposable.Dispose

//下面的代码与前面的using语句的功能一样
Transaction tx=new Transaction();
Try
{
Console.WriteLine(tx.id);
}
Finally{
If(tx!=null)((IDisposable)tx).Dispose();
}
}
}

我们走到哪儿了
    对象(object)是多态的实体,CLR总是把它分配在堆上。值(value)只是格式化的内存单元,作为声明上下文或作用域的一部分被分配。对象和值都支持相等性(equivalence)和排序(ordering)的概念,但只有对象真正支持同一性( identity)的概念。尽管可以将值作为对象使用(或者将对象作为值使用),但是,使用实例的恰当形式,将会使编程模型更容易一些。P
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 7+20=? 的结果(结果是:27)
结  果: