当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 所以回答你的问题:
是的,它会的. 显然,每个熟悉C#规范的人都知道构造函数(无论哪种类型)永远不能返回null,这使得你的问题变得有点不切实际. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |