gpt4 book ai didi

c# - CA2202 不要多次处理对象 - 首选处理哪个对象?

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:33 25 4
gpt4 key购买 nike

我在以下代码中收到 CA2202 警告

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 都有自己的 using 语句时触发。是否有优先处理的对象?外部 (msDecrypt) 或内部 (csDecrypt) - 如果是,为什么?

这个问题不是这个 thread 的重复问题因为我想知道一般来说 - 哪个更好处理 - 内部/后面的对象或外部/前面的对象,为什么?

最佳答案

这解释了here如果您向下滚动到 Example 部分。简而言之,这是由于内部 using block 中的资源也包含外部 using block 的资源。当您对内部资源调用 Dispose 时,它还会释放其中包含的外部资源。

建议的修复方法是将整个内容包装在 try block 中,将内部资源放在 using block 中,然后调用 Disposefinally block 内部的外部资源上,如果它还不是 null

为了更直接地回答您的问题,内部资源应该是更适合处理的资源。

关于c# - CA2202 不要多次处理对象 - 首选处理哪个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30384195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com