Cam*_*tin 9 .net c# vb.net dispose idisposable
我应该在返回实现IDisposable的对象后调用.Dispose()吗?
myDisposableObject Gimme() {
//Code
return disposableResult;
disposableResult.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
换句话说,对象是我返回副本,还是对象本身?谢谢 :)
不,你不应该.您返回对该对象的引用,因此没有复制.在.NET中,除非您特别要求,否则永远不会复制对象.
此外,即使存在应该使用的情况,也不能使用类似的代码处理对象.return语句后面的代码永远不会执行,您将收到有关无法访问代码的警告.
到目前为止,没有一个答案提到的一件事是,如果Gimme抛出异常,你应该处理该对象.例如:
MyDisposableObject Gimme()
{
MyDisposableObject disposableResult = null;
try
{
MyDisposableObject disposableResult = ...
// ... Code to prepare disposableResult
return disposableResult;
}
catch(Exception)
{
if (disposableResult != null) disposableResult.Dispose();
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8729 次 |
| 最近记录: |