CA2104:不要宣告唯讀的可變動參考類型
項目 | 值 |
---|---|
RuleId | CA2104 |
類別 | Microsoft.Security |
重大變更 | 不中斷 |
注意
規則 CA2104 已淘汰,將會在未來的 Visual Studio 版本中移除。 由於判斷型別的實際不變性所需的複雜分析,因此不會將它當作分析器實作。
原因
外部可見類型包含了可變動參考類型的外部可見唯讀欄位。
注意
此規則已遭取代。 如需詳細資訊,請參閱過時的規則。
檔案描述
可變動類型是可以修改執行個體資料的類型。 System.Text.StringBuilder 類別是可變參考型別的範例。 其中包含可變更類別執行個體值的成員。 不可變參考型別的範例是 System.String 類別。 具現化之後,其值永遠不會變更。
參考型別欄位 (或 C++ 中的指標) 上的唯讀修飾元 (在 C# 中是 readonly、在 Visual Basic 中是 ReadOnly,以及在 C++ 中是 const) 可防止欄位被參考型別的不同執行個體取代。 不過,修飾元不會防止欄位的執行個體資料透過參考型別修改。
事實上,此規則可能會不小心顯示不可變型別的違規。 在此情況下,可以放心隱藏警告。
唯讀陣列欄位不受此規則約束,而會導致違反 CA2105:陣列欄位不應該是唯讀規則。
如何修正違規
若要修正此規則的違規,請移除唯讀修飾詞,或者如果可接受重大變更,請將欄位取代為不可變的型別。
隱藏警告的時機
如果欄位型別不可變,則可放心隱藏此規則的警告。
範例
下列範例顯示導致違反此規則的欄位宣告:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應