以下两段代码之间有什么区别:
using (Object o = new Object())
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
和
{
Object o = new Object();
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我已经开始使用using更多但是我很好奇与范围对象相比实际上有什么好处.
编辑:我从中获取的有用花絮:
Jon Skeet:
请注意,这不会以任何方式,形状或形式强制进行垃圾收集.垃圾收集和快速资源清理有些正交.
埃德斯会评论:
除非您的类实现了IDisposable接口,并且具有Dispose()函数,否则不要使用.
Jon*_*eet 20
第一个片段Dispose在块的末尾调用- 您只能使用实现的类型来执行IDisposable它,它基本上调用Disposefinally块,因此您可以将它与需要清理资源的类型一起使用,例如
using (TextReader reader = File.OpenText("test.txt"))
{
// Use reader to read the file
}
// reader will be disposed, so file handle released
Run Code Online (Sandbox Code Playgroud)
请注意,这并不能强制进行垃圾收集以任何方式,形状或形式.垃圾收集和快速资源清理有些正交.
基本上,你应该使用一个using语句来实现几乎任何实现IDisposable的代码以及你的代码块将负责的事情(就清理而言).
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |