CA2202 경고: 일회용품 다중 처리
CA2202 경고는 코드 분석 도구에서 객체가 동일한 방법으로 여러 번 삭제된 것을 감지하면 트리거됩니다. 이로 인해 Null 참조 예외와 같은 잠재적인 문제가 발생할 수 있습니다.
제공된 코드에서:
<code class="language-csharp">public static byte[] Encrypt(string data, byte[] key, byte[] iv) { using (MemoryStream memoryStream = new MemoryStream()) { using (DESCryptoServiceProvider cryptograph = new DESCryptoServiceProvider()) { using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write)) { using (StreamWriter streamWriter = new StreamWriter(cryptoStream)) { streamWriter.Write(data); } } } return memoryStream.ToArray(); } }</code>
이 경고가 여러 번 실행됩니다. using
블록 내에서 MemoryStream
, DESCryptoServiceProvider
, CryptoStream
및 StreamWriter
을 사용하면 코드 분석 도구는 34행에서 여러 번 처리되었음을 식별합니다. 이 문제를 해결하기 위해 이 경우 경고를 표시하지 않을 수 있습니다.
이 경고를 표시하지 않는 이유는 코드가 일회용 개체를 일관되게 처리하기 때문입니다. 다른 클래스도 생성된 일회용 개체를 소유하고 이에 대해 Dispose
을 호출할 수 있습니다. 이 경우 다중 폐기에 대해 걱정할 필요가 없습니다. [SuppressMessage]
메소드에
<code class="language-csharp">[SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")] public static byte[] Encrypt(string data, byte[] key, byte[] iv) { // 代码保持不变 }</code>
또는 CA2202 규칙이 불필요하다고 주장할 수도 있습니다. IDisposable.Dispose
문서에 객체가 후속 삭제 호출을 무시해야 한다고 명시적으로 명시되어 있기 때문입니다. 따라서 전체 프로젝트에 대해 이 경고를 표시하지 않는 것이 적절할 수 있습니다. 그러나 코드가 CA1065 경고를 사용하여 감지할 수 있는 Dispose
의 잘못된 구현에 의존하지 않도록 주의 깊게 고려해야 합니다.
위 내용은 CA2202 경고를 처리하는 방법: C#에서 일회용품을 여러 번 폐기합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!