加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

当c#.net使用块失败时会发生什么?

发布时间:2020-12-16 00:21:02 所属栏目:百科 来源:网络整理
导读:如果我有一个使用块,我创建一个对象(例如一个FileStream对象),并且该对象无法创建(返回null,抛出异常等),块中的代码是否仍然执行? using (FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)) { // do stuff with fs
如果我有一个使用块,我创建一个对象(例如一个FileStream对象),并且该对象无法创建(返回null,抛出异常等),块中的代码是否仍然执行?

using (FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)) {
    // do stuff with fs here
}
// do more stuff after

如果FileStream构造函数返回null(如果FileStream构造函数总是返回一个有效的对象,让我们只是为了参数说可以返回null),那么代码内部会执行吗?或者它会跳过“在这里用fs做什么”代码?

解决方法

using (FileStream fs = new FileStream(path,FileShare.ReadWrite)) 
{
    // do stuff with fs here
}
// do more stuff after

相当于:

FileStream fs = new FileStream(path,FileShare.ReadWrite)
try
{
    // do stuff with fs here
}
finally
{
    if (fs != null)
    {
        ((IDisposable)fs).Dispose();
    }
}
// do more stuff after

所以回答你的问题:

If the FileStream constructor were to return null (if the FileStream
constructor always returns a valid object,let’s just say for sake of
argument that it is possible to return null),would the code inside
execute?

是的,它会的.

显然,每个熟悉C#规范的人都知道构造函数(无论哪种类型)永远不能返回null,这使得你的问题变得有点不切实际.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读