解決 CA2202 警告:C# 中的多個物件處置
靜態程式碼分析工具經常標記潛在問題,CA2202 就是這樣的警告之一。 它強調了在單一方法中多次處置物件的風險,可能導致諸如 System.ObjectDisposedException
.
範例程式碼可能顯示 Visual Studio 的程式碼分析產生 CA2202 警告,以處理 cryptoStream
方法中的 memoryStream
和 Encrypt
。
解 CA2202:建議抑制
在這種情況下,抑制 CA2202 警告是最好的方法。 溪流和一次性物品等資源需要一致的處置處理。 使用這些資源的類別不應該擔心創建類別是否已經處理掉它們。
要抑制警告,請使用 SuppressMessage
屬性:
<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)</code>
這告訴程式碼分析器忽略此方法的 CA2202 警告。
理解IDisposable.Dispose
行為
IDisposable.Dispose
文件明確指出 Dispose
方法應該是冪等的;多次呼叫不應引發異常。這允許使用 using
語句進行安全級聯處置,如範例所示。
重要注意事項
雖然多次處置可以表明Dispose
方法的實現或誤用存在問題(CA1065可能會標記),但對於涉及級聯處置的場景,CA2202通常是誤報並需要抑制。項目範圍內的抑制可以防止誤報並保持解碼一致性。
以上是如何有效解決 C# 中多個物件處置的 CA2202 警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!