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
DDDoriginal
2025-01-23 11:07:12661parcourir

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>

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!

Déclaration:
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