我有一段代码处理存储在数据库中的客户.有一个对象Customer,它有两个类型的属性byte[]:一个用于密码盐,另一个用于密码哈希.
使用FxCop检查代码,我看到它抱怨(CA1819,性能规则):
"返回数组的属性容易导致代码效率低下.考虑使用集合或将其作为方法.有关详细信息,请参阅设计指南."
并建议:
"更改'Customer.PasswordHash'以返回集合或使其成为方法."
我真的不明白,我正在做的代码效率低下是什么?
关于CA1819 msdn性能警告规则:
属性返回的数组不受写保护,即使该属性是只读的。为了保持数组防篡改,该属性必须返回数组的副本。通常,用户不会理解调用此类属性对性能的不利影响。具体来说,他们可能会将该属性用作索引属性。
我想知道其他对象在由属性返回时是否可变,或者这是否只发生在数组中?如果它只对数组有效,为什么?