2010-07-24 46 views
9

我有一段代码处理存储在数据库中的客户。有一个对象Customer,其中包括byte[]类型的两个属性:密码salt的一个属性,密码hash的第二个属性。为什么“返回数组的属性容易导致代码效率低下”?

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

“属性返回数组容易发生代码效率低下考虑使用集合或决策。这是一种方法,更多信息请参阅设计指南。“

,并建议:

“更改 'Customer.PasswordHash' 返回一个集合或使它的方法。”

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

回答

4

问题是数组是总是可变。这意味着你不能从一个方法没有任何返回一个:

  • 允许呼叫者弄乱你的内部状态
  • 创建一个备份

如果你使用一个集合,可以取而代之的是围绕真实的收藏创建一个只读包装,并返回 - 并且可以相当便宜。或者,如果您将其更改为可降低呼叫速度非常快的预期的方法。

当然,如果你喜欢来电者突变你的数据,那么阵列将工作正常...

相关问题