首頁 > 後端開發 > C++ > 在 C# 中處置多個物件時如何處理 CA2202 警告?

在 C# 中處置多個物件時如何處理 CA2202 警告?

DDD
發布: 2025-01-23 11:07:12
原創
632 人瀏覽過

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

在 C# 中處理多個物件時解決 CA2202 警告

由於可能重複 CryptoStream 調用,以下 C# 程式碼範例在 Visual Studio 程式碼分析中針對 MemoryStreamDispose 產生 CA2202 警告。 建議的方法是抑制這些警告,而不是修改程式碼。

抑制 CA2202 警告:首選解決方案

考慮到程式碼中一致的物件處理模式,抑制警告比更改程式碼更好。 對多個 Dispose 呼叫的擔憂是沒有根據的,因為 IDisposable.Dispose 方法被設計為冪等的(忽略第一個呼叫之後的後續呼叫)。 using 語句優雅地處理了這個問題。

以下是抑制警語的方法:

<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>
登入後複製

壓制的理由

IDisposable.Dispose 方法文件明確指出,第一個之後的呼叫將被忽略。 程式碼中的巢狀 using 語句建立了一個場景,其中多個物件管理處置,但這由框架正確處理。因此,CA2202 警告是不必要的,可以安全地抑制。

以上是在 C# 中處置多個物件時如何處理 CA2202 警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板