为什么“返回数组的属性容易导致代码效率低下”?

9
我有一段处理存储在数据库中的客户信息的代码。其中有一个对象Customer,它包含两个类型为byte[]的属性:一个用于密码盐值,另一个用于密码哈希值。
通过使用FxCop检查代码,我发现它抱怨(CA1819,性能规则):
“返回数组的属性容易导致代码效率低下。考虑使用集合或将其作为方法。请参阅设计准则以获取更多信息。”
并建议:
“将'Customer.PasswordHash'更改为返回集合或将其作为方法。”
我真的不明白,我所做的事情中存在什么代码效率问题?
1个回答

4
问题在于数组始终是可变的。这意味着你不能从方法中返回一个数组,除非:
  • 允许调用者破坏你的内部状态
  • 首先创建一个副本
如果你使用一个集合,你可以创建一个只读的包装器来包装真正的集合,然后返回它 - 这可能会更便宜。或者,如果你将它改成一个方法,那么它将降低调用它的速度的期望。
当然,如果你愿意让调用者改变你的数据,那么数组也可以正常工作...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接