Heim > Backend-Entwicklung > C++ > Wie gehe ich mit CA2202-Warnungen um, wenn mehrere Objekte in C# entsorgt werden?

Wie gehe ich mit CA2202-Warnungen um, wenn mehrere Objekte in C# entsorgt werden?

DDD
Freigeben: 2025-01-23 11:07:12
Original
639 Leute haben es durchsucht

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

Behebung von CA2202-Warnungen beim Verwerfen mehrerer Objekte in C#

Das folgende C#-Codebeispiel generiert CA2202-Warnungen in Visual Studio Code Analysis für CryptoStream und MemoryStream aufgrund möglicher wiederholter Dispose-Aufrufe. Anstelle einer Codeänderung ist die Unterdrückung dieser Warnungen der empfohlene Ansatz.

CA2202-Warnungen unterdrücken: Die bevorzugte Lösung

Angesichts des konsistenten Objektentsorgungsmusters im Code ist die Unterdrückung der Warnungen einer Änderung des Codes vorzuziehen. Die Besorgnis über mehrere Dispose-Aufrufe ist unbegründet, da die IDisposable.Dispose-Methode idempotent konzipiert ist (nachfolgende Aufrufe nach dem ersten werden ignoriert). Die using-Anweisung handhabt dies elegant.

So unterdrücken Sie die Warnungen:

<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>
Nach dem Login kopieren

Begründung für die Unterdrückung

In der Methodendokumentation IDisposable.Dispose heißt es ausdrücklich, dass Aufrufe, die über den ersten hinausgehen, ignoriert werden. Die verschachtelten using-Anweisungen im Code erzeugen ein Szenario, in dem mehrere Objekte die Entsorgung verwalten, dies jedoch vom Framework korrekt gehandhabt wird. Daher ist die CA2202-Warnung unnötig und kann sicher unterdrückt werden.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit CA2202-Warnungen um, wenn mehrere Objekte in C# entsorgt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage