我读了很多关于C#中关键字using
的帖子,但我找不到任何人有同样的问题。 阅读this有趣的文章,它说,使用的语句基本上等同于一个try/catch块:使用初始化内部的异常
MyResource myRes= new MyResource();
try
{
myRes.DoSomething();
}
finally
{
// Check for a null resource.
if (myRes!= null)
// Call the object's Dispose method.
((IDisposable)myRes).Dispose();
}
真正让我要疯了是对象初始化myRes= new MyResource()
仍是try/catch块的外,所以如果在初始化过程中出现问题(哦,它确实!)我没有其他办法来处理它比使用正常的try/catch块。
这是正确的还是我错过了什么?在我看来,这使得声明部分无用。
我也尝试过这样的事情:
using (MyResource myRes)
{
myRes = new MyResource();
myRes.DoSomething();
}
但是编译器不喜欢这个,所以无法使初始化try块内。
这对我来说似乎很奇怪,我认为我必须错过一些东西。任何人都可以解释我背后的原因吗?
如果'new MyResource();'失败,'myRes'仍然为'null',那么您想要“处置”? –