我在 C# 中阅读了很多关于using
关键字的主题,但我找不到任何有相同问题的人。阅读这篇有趣的文章,它说 using 语句基本上等同于 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
声明的意义部分无用。
我也尝试过这样的事情:
using (MyResource myRes)
{
myRes = new MyResource();
myRes.DoSomething();
}
但是编译器不喜欢这样,所以不可能将初始化带入 try 块中。
这对我来说似乎很奇怪,以至于我认为我一定错过了一些东西。谁能解释一下这背后的原因?