Det*_*iel 3 c# clr using try-finally
在我的项目中,我有一个构造函数可以抛出的对象.所以我正在使用的代码如下:
MyObject obj = null;
try
{
obj = new MyObject();
obj.DoSomething();
}
finally
{
if (obj != null)
obj.Free();
}
Run Code Online (Sandbox Code Playgroud)
using (MyObject obj = new MyObject())
{
obj.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
由.NET CLR转换为
{
MyObject obj = new MyObject();
try
{
obj.DoSomething();
}
finally
{
if (obj != null)
((IDisposable)obj).Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:我可以以某种方式使CLR将对象的构造函数放入try块中吗?
问题是:我可以以某种方式使CLR将对象的构造函数放入try块中吗?
不,或者说,从资源管理的角度来看,这样做毫无意义.如果构造函数抛出异常,则不会分配引用obj,因此无需调用任何Dispose内容.
至关重要的是,如果构造函数抛出异常,它会处理它分配的任何资源,因为调用者将无法执行.
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |