为什么"返回数组的属性容易出现代码效率低下"?

Ars*_*nko 9 oop performance fxcop

我有一段代码处理存储在数据库中的客户.有一个对象Customer,它有两个类型的属性byte[]:一个用于密码盐,另一个用于密码哈希.

使用FxCop检查代码,我看到它抱怨(CA1819,性能规则):

"返回数组的属性容易导致代码效率低下.考虑使用集合或将其作为方法.有关详细信息,请参阅设计指南."

并建议:

"更改'Customer.PasswordHash'以返回集合或使其成为方法."

我真的不明白,我正在做的代码效率低下是什么?

Jon*_*eet 4

问题是数组总是可变的。这意味着如果没有以下任一方法,您就无法从方法返回一个:

  • 允许来电者扰乱你的内部状态
  • 首先创建一个副本

如果您使用集合,则可以围绕真实集合创建一个只读包装器,然后返回该集合 - 这可能会便宜得多。或者,如果将其更改为会降低调用速度的期望的方法。

当然,如果您对调用者改变您的数据感到满意,那么数组就可以正常工作......