【发布时间】:2012-11-22 15:37:50
【问题描述】:
假设我想使用 2 个实现 IDispose 模式的类。其中一个类使用另一个类进行实例化,但之后不需要。当堆叠“使用”关键字时,这将导致(例如)在使用字体期间锁定文件。出于“编码美观”的原因,我希望文件在完成后立即解锁。
看看下面的“类似标签”的系统。
using1 (Stream stream = File.OpenRead("font.ttf"))
using2 (Font font = FontExtensions.FromStream(stream, 32))
ENDusing1
//use font here
ENDusing2
分层方式,代码块的设计方式,对当前的处理施加了(美)限制。当然,这可以通过使用 try/finally 块来解决,但这些块并不那么整洁。
我是否缺少使用(大声笑?)嵌套 IDisposable 对象/流的基本设计?
请分享您对标记代码块的看法以及解决此问题的最佳方法(编码之美)。
【问题讨论】:
-
最里面的
using块将被首先退出和处理。 -
我不确定它可以使用
try/finally解决,因为您有相同的嵌套限制,但您当然可以通过手动调用来解决它.Dispose().
标签: c# code-formatting