Maison > développement back-end > C++ > Comment gérer les avertissements CA2202 lors de la suppression de plusieurs objets en C# ?

Comment gérer les avertissements CA2202 lors de la suppression de plusieurs objets en C# ?

DDD
Libérer: 2025-01-23 11:07:12
original
639 Les gens l'ont consulté

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

Résolution des avertissements CA2202 lors de la suppression de plusieurs objets en C#

L'exemple de code C# suivant génère des avertissements CA2202 dans Visual Studio Code Analysis pour CryptoStream et MemoryStream en raison d'appels Dispose répétés potentiels. Au lieu de modifier le code, la suppression de ces avertissements est l'approche recommandée.

Suppression des avertissements CA2202 : la solution privilégiée

Étant donné le modèle d'élimination des objets cohérent dans le code, la suppression des avertissements est préférable à la modification du code. La préoccupation concernant plusieurs appels Dispose est infondée car la méthode IDisposable.Dispose est conçue pour être idempotente (ignorant les appels suivants après le premier). La déclaration using gère cela avec élégance.

Voici comment supprimer les avertissements :

<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>
Copier après la connexion

Justification de la suppression

La documentation de la méthode IDisposable.Dispose indique explicitement que les appels au-delà du premier sont ignorés. Les instructions using imbriquées dans le code créent un scénario dans lequel plusieurs objets gèrent l'élimination, mais cela est géré correctement par le framework. Par conséquent, l’avertissement CA2202 est inutile et peut être supprimé en toute sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal