Почему “Свойства, что возвращаемые массивы являются склонными для кодирования неэффективности”?

У меня есть часть кода, который имеет дело с клиентами, сохраненными в базе данных. Существует объект Customer, и это имеет, среди другого, двух свойств типа byte[]: одно свойство для соли пароля, второе для хэша пароля.

Проверяя код с FxCop, я вижу, что он жалуется (CA1819, Правила Производительности) что:

"Свойства, что возвращаемые массивы являются склонными для кодирования неэффективности. Рассмотрите использование набора или делающий это метод. См. руководство по проектированию для получения дополнительной информации".

и предлагает:

"Изменение 'Клиент. PasswordHash', чтобы возвратить набор или сделать это методом".

Я действительно не понимаю, какова неэффективность кода в том, что я делаю?

9
задан Deduplicator 9 September 2014 в 06:35
поделиться

1 ответ

Проблема в том, что массивы всегда изменяемы. Это означает, что вы не можете вернуть один из метода без:

  • Разрешить вызывающей стороне испортить ваше внутреннее состояние
  • Сначала создать копию

Если вы используете коллекцию, вы можете создать оболочку только для чтения вокруг вместо этого настоящую коллекцию и верните ее - а это может быть значительно дешевле. В качестве альтернативы, если вы измените его на метод, который снизит ожидание его быстрого вызова.

Конечно, если вы довольны тем, что вызывающие абоненты изменяют ваши данные, тогда массив будет работать нормально ...

4
ответ дан 3 November 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: