CodeQL 文档

错失使用“只读”的机会

ID: cs/missed-readonly-modifier
Kind: problem
Security severity: 
Severity: recommendation
Precision: high
Tags:
   - maintainability
   - language-features
Query suites:
   - csharp-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

如果私有字段的所有赋值操作都发生在声明时或同一类构造函数中,则该字段可以使用 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;
    }
}

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私