界: Code Quality
代码质量不佳会导致不可预测的行为。对于用户来说,通常表现为可用性差。对于攻击者来说,提供了以意外方式对系统施加压力的机会。
Code Correctness: Readonly Collection Reference
Abstract
只读关键字会强制执行以下规则:必须按变量的声明或在构造函数中初始化变量,且不能在任何其他位置修改变量。这将对值类型产生预期的效果,但仍然可以修改对象和列表的内容,即便它已被声明为 private readonly 也是如此。
Explanation
通过从 getter-only 属性返回
示例 1:下面的代码包含被声明为
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