CA1805:請勿進行非必要的初始化
屬性 | 值 |
---|---|
規則識別碼 | CA1805 |
標題 | 請勿進行非必要的初始化 |
類別 | 效能 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 8 中啟用 | No |
原因
類別的欄位會明確初始化為該欄位類型的預設值。
檔案描述
.NET 執行時間在執行建構函式之前,先將參考型別的所有欄位初始化為其預設值。 在大部分情況下,將欄位明確初始化為建構函式中的預設值是多餘的,新增維護成本並可能降低效能(例如增加元件大小),而且可以移除明確初始化。
如何修正違規
在大部分情況下,適當的修正是刪除不必要的初始化。
class C
{
// Violation
int _value1 = 0;
// Fixed
int _value1;
}
在某些情況下,刪除初始化可能會導致 後續發出 CS0649 警告,因為欄位永遠保留其預設值。 在這種情況下,更好的修正可能是完全刪除欄位,或將它取代為 屬性:
class C
{
// Violation
private static readonly int s_value = 0;
// Fixed
private static int Value => 0;
}
隱藏警告的時機
隱藏警告一律是安全的,因為警告只會醒目提示可能不必要的程式碼,並避免使用。
隱藏警告
如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。
#pragma warning disable CA1805
// The code that's violating the rule is on this line.
#pragma warning restore CA1805
若要停用檔案、資料夾或專案的規則,請在組態檔 中將其嚴重性設定為 。 none
[*.{cs,vb}]
dotnet_diagnostic.CA1805.severity = none
如需詳細資訊,請參閱 如何隱藏程式碼分析警告 。