> 백엔드 개발 > C++ > CA2202 경고를 처리하는 방법: C#에서 일회용품을 여러 번 폐기합니까?

CA2202 경고를 처리하는 방법: C#에서 일회용품을 여러 번 폐기합니까?

Barbara Streisand
풀어 주다: 2025-01-23 11:16:11
원래의
284명이 탐색했습니다.

How to Handle the CA2202 Warning: Multiple Disposal of Disposables in C#?

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, CryptoStreamStreamWriter을 사용하면 코드 분석 도구는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿