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
Lepaskan: 2025-01-23 11:07:12
asal
571 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan