错失使用“只读”的机会¶
ID: cs/missed-readonly-modifier
Kind: problem
Security severity:
Severity: recommendation
Precision: high
Tags:
- maintainability
- language-features
Query suites:
- csharp-security-and-quality.qls
如果私有字段的所有赋值操作都发生在声明时或同一类构造函数中,则该字段可以使用 readonly
修饰符。将字段设置为 readonly
可以防止在对象初始化后意外赋值。
建议¶
除非允许在对象初始化后更改字段,否则请向该字段添加 readonly
修饰符。
示例¶
在以下示例中,字段 Field
仅在构造函数中赋值,但它在对象初始化后仍然可以修改。
class Bad
{
int Field;
public Bad(int i)
{
Field = i;
}
}
在修改后的示例中,该字段设置为 readonly
。
class Good
{
readonly int Field;
public Good(int i)
{
Field = i;
}
}
参考¶
Microsoft:readonly。