界: Code Quality

代码质量不佳会导致不可预测的行为。对于用户来说,通常表现为可用性差。对于攻击者来说,提供了以意外方式对系统施加压力的机会。

Code Correctness: Readonly Collection Reference

Abstract
只读关键字会强制执行以下规则:必须按变量的声明或在构造函数中初始化变量,且不能在任何其他位置修改变量。这将对值类型产生预期的效果,但仍然可以修改对象和列表的内容,即便它已被声明为 private readonly 也是如此。
Explanation
通过从 getter-only 属性返回 private readonly 列表变量,您可以调用代码来修改该列表的内容,这样,可有效提供列表的写访问权限,并阻止程序员将其设置为 private readonly 的计划。

示例 1:下面的代码包含被声明为 private readonly 的列表 _item

class Order
{
private readonly List<string> _item = new List<string>();
public IEnumerable<string> Item { get { return _item; } }

public Order()
{
/*class initialize */
}

/*some important function......*/
}
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 398
desc.structural.dotnet.code_correctness_readonly_collection_reference