Иногда FxCop, с моей точки зрения, преувеличивает.
Все зависит от того, что вы должны сделать, если вы пишете сложную систему, где требуется безопасность и очень чистый код, вы должны вернуть версию только для чтения.из этого массива.То есть, приведите массив к IEnumerable, как предлагает devdigital, или используйте хорошую идею ImmutableArray из Mohamed Abed, которую я предпочитаю.
Если вы пишете программное обеспечение, требующее высокой производительности ... нет ничего лучше массивадля выступлений в C #.Массивы могут быть намного более производительными для итерации и чтения.
Если производительность действительно важна, я предлагаю вам игнорировать это предупреждение.Все еще допустимо, даже если не слишком чисто, возвращать массив только для чтения.
for (int i = 0; i < array.Length; ++i) { k = array[i] + 1; }
Это очень быстро для больших массивов в C #: он избегает проверки границ массива.Он будет работать так же, как и скомпилированный код на Си.
Я всегда хотел, чтобы в C # был тип "readonly array", но нет никакой надежды увидеть его.