我收到以下代码的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都有自己的使用语句的情况下触发的。是否有一个首选对象来处理?外层(msDecrypt)还是内部(csDecrypt)- -如果是这样的话?
这个问题不是这个线程的重复,因为我想一般地知道--哪个更好地处理--内/后对象还是外部/早期对象?为什么?
发布于 2015-05-22 00:40:15
如果向下滚动到示例部分,将解释示例。简而言之,这是由于内部using块中的资源也包含外部using块的资源造成的。当您对内部资源调用Dispose时,它也会处理其中包含的外部资源。
建议的解决方法是将整个过程封装在一个try块中,将内部资源放在一个using块中,然后在一个finally块内部的外部资源上调用Dispose (如果它还不是null )。
为了更直接地回答你的问题,内部资源应该是一个更好的处理。
https://stackoverflow.com/questions/30384195
复制相似问题