首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CA2202不会多次释放对象-哪个是首选对象?

CA2202不会多次释放对象-哪个是首选对象?
EN

Stack Overflow用户
提问于 2015-05-21 20:58:12
回答 1查看 213关注 0票数 2

我收到以下代码的CA2202警告

代码语言:javascript
复制
using (MemoryStream msDecrypt = new MemoryStream(encrypted))
        using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
        return srDecrypt.ReadToEnd();

这段代码是在msDecrypt和csDecrypt都有自己的使用语句的情况下触发的。是否有一个首选对象来处理?外层(msDecrypt)还是内部(csDecrypt)- -如果是这样的话?

这个问题不是这个线程的重复,因为我想一般地知道--哪个更好地处理--内/后对象还是外部/早期对象?为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-22 00:40:15

如果向下滚动到示例部分,将解释示例。简而言之,这是由于内部using块中的资源也包含外部using块的资源造成的。当您对内部资源调用Dispose时,它也会处理其中包含的外部资源。

建议的解决方法是将整个过程封装在一个try块中,将内部资源放在一个using块中,然后在一个finally块内部的外部资源上调用Dispose (如果它还不是null )。

为了更直接地回答你的问题,内部资源应该是一个更好的处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30384195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档