警告 CA2013:請勿使用具有實值型別的 ReferenceEquals

從 .NET 5 開始,預設會啟用 .NET 程式碼分析器規則 CA2013。 其會產生任何程式碼的建置警告,其中 ReferenceEquals(Object, Object) 是用來比較一或多個實值型別是否相等。

變更描述

從 .NET 5 開始,.NET SDK 包含 .NET 原始程式碼分析器。 這些規則中有些會預設啟用,包括 CA2013。 如果您的專案包含違反此規則的程式碼,且設定為將警告視為錯誤,則此項變更會中斷您的組建。

規則 CA2013 會尋找在其中使用 ReferenceEquals(Object, Object) 來比較一或多個實值型別是否相等的執行個體。 以這種方式比較實值型別是否相等,可能會導致不正確的結果,因為值會在比較之前進行 Boxed 處理。 即使比較的值代表實值型別的相同執行個體,ReferenceEquals(Object, Object) 也會傳回 false

導入的版本

5.0

  • 變更程式碼以使用適當的相等運算子,例如 ==。 您不應該隱藏這個警告。

  • 若要完全停用程式碼分析,請在專案檔中將 EnableNETAnalyzers 設定為 false。 如需詳細資訊,請參閱 EnableNETAnalyzers

受影響的 API