Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengendalikan Amaran CA2202 Apabila Melupuskan Pelbagai Objek dalam C#?

Bagaimana Mengendalikan Amaran CA2202 Apabila Melupuskan Pelbagai Objek dalam C#?

DDD
DDDasal
2025-01-23 11:07:12633semak imbas

How to Handle CA2202 Warnings When Disposing Multiple Objects in C#?

Mengatasi Amaran CA2202 Apabila Melupuskan Berbilang Objek dalam C#

Contoh kod C# berikut menjana amaran CA2202 dalam Analisis Kod Visual Studio untuk CryptoStream dan MemoryStream disebabkan kemungkinan panggilan Dispose berulang. Daripada pengubahsuaian kod, menyekat amaran ini ialah pendekatan yang disyorkan.

Menindas Amaran CA2202: Penyelesaian Pilihan

Memandangkan corak pelupusan objek yang konsisten dalam kod, menyekat amaran adalah lebih baik daripada mengubah kod. Kebimbangan berbilang panggilan Dispose tidak berasas kerana kaedah IDisposable.Dispose direka bentuk untuk menjadi idempoten (mengabaikan panggilan berikutnya selepas panggilan pertama). Kenyataan using menangani perkara ini dengan elegan.

Berikut ialah cara untuk menyekat amaran:

<code class="language-csharp">[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")]
public static byte[] Encrypt(string data, byte[] key, byte[] iv) {
  using (var memoryStream = new MemoryStream()) {
    using (var cryptograph = new DESCryptoServiceProvider())
    using (var cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write))
    using (var streamWriter = new StreamWriter(cryptoStream)) {
      streamWriter.Write(data);
    }
    return memoryStream.ToArray();
  }
}</code>

Rasional Penindasan

Dokumentasi kaedah IDisposable.Dispose secara eksplisit menyatakan bahawa panggilan di luar panggilan pertama diabaikan. Penyataan using bersarang dalam kod mencipta senario di mana berbilang objek menguruskan pelupusan, namun ini dikendalikan dengan betul oleh rangka kerja. Oleh itu, amaran CA2202 tidak diperlukan dan boleh disekat dengan selamat.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Amaran CA2202 Apabila Melupuskan Pelbagai Objek dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn