讓結構欄位可寫入 (IDE0064)
屬性 | 值 |
---|---|
規則識別碼 | IDE0064 |
標題 | 讓結構欄位可寫入 |
類別 | CodeQuality |
子類別 | 語言規則 (修飾元喜好設定) |
適用語言 | C# |
概觀
這項規則會偵測包含一或多個 readonly
欄位的結構,且包含建構函式外部的 this
指派。 規則會建議將 readonly
欄位轉換為非唯讀,也就是可寫入。 將這類結構欄位標記為 readonly
可能會導致非預期的行為,因為當 this
在建構函式外部指派時,指派至欄位的值可能會變更。
選項
此規則沒有相關聯的程式碼樣式選項。
範例
// Code with violations
struct MyStruct
{
public readonly int Value;
public MyStruct(int value)
{
Value = value;
}
public void Test()
{
this = new MyStruct(5);
}
}
// Fixed code
struct MyStruct
{
public int Value;
public MyStruct(int value)
{
Value = value;
}
public void Test()
{
this = new MyStruct(5);
}
}
隱藏警告
若您只想隱藏單一違規,請將前置處理指示詞新增至來源檔案以停用規則,然後重新啟用規則。
#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064
若要停用檔案、資料夾或專案的規則,請在組態檔中將其嚴重性設定為 none
。
[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none
若要停用整個類別的規則,請在組態檔中將類別的嚴重性設定為 none
。
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
如需詳細資訊,請參閱如何隱藏程式碼分析警告。