Dan*_*yon 3 .net c# using block
如果我有一个使用块,我创建一个对象(例如一个FileStream对象),并且该对象无法创建(返回null,抛出异常等),块中的代码是否仍然执行?
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
// do stuff with fs here
}
// do more stuff after
Run Code Online (Sandbox Code Playgroud)
如果FileStream构造函数返回null(如果FileStream构造函数总是返回一个有效的对象,让我们只是为了参数说可以返回null),那么代码内部会执行吗?或者它会跳过"在这里用fs做什么"代码?
Dar*_*rov 13
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
// do stuff with fs here
}
// do more stuff after
Run Code Online (Sandbox Code Playgroud)
相当于:
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
try
{
// do stuff with fs here
}
finally
{
if (fs != null)
{
((IDisposable)fs).Dispose();
}
}
// do more stuff after
Run Code Online (Sandbox Code Playgroud)
所以回答你的问题:
如果FileStream构造函数返回null(如果FileStream构造函数总是返回一个有效的对象,让我们只是为了参数说可以返回null),那么代码内部会执行吗?
是的,它会的.
显然,每个熟悉C#规范的人都知道构造函数(无论哪种类型)永远不会返回null
哪种类型会让你的问题变得有点不切实际.
归档时间: |
|
查看次数: |
190 次 |
最近记录: |