如果我有一个使用块,我创建一个对象(例如FileStream对象),并且该对象无法创建(返回null,抛出异常等),块中的代码是否仍然执行?当c#.net using block失败时会发生什么?
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
// do stuff with fs here
}
// do more stuff after
如果FileStream构造函数是返回空值(如果FileStream构造函数总是返回一个有效的对象,让我们只说为便于讨论,有可能返回NULL),将里面的代码执行?或者它会跳过“用fs做这些东西”的代码吗?
是什么让你觉得它仍然会执行而不是崩溃? – perilbrain 2012-08-06 16:30:26
返回null的构造函数? – ken2k 2012-08-06 16:30:31
@ ken2k:正如我所看到的,这仅仅是一个例子。说,而不是一个构造函数,它要求对象服务定位器,工厂或任何东西。实际上,编写'using(null){}'[编译并运行良好](http://blogs.msdn.com/b/ericlippert/archive/2011/03/03/danger-will-robinson.aspx)。 .. – Andre 2012-08-06 16:47:05