CA1819: Свойства не должны возвращать массивы - Какая альтернатива?

Я сталкивался с этим правилом FxCop раньше и не был доволен тем, как устранять нарушения ( thread1 , thread2 ). Теперь у меня есть еще один случай, когда мне нужно исправить нарушения типа CA1819 .

В частности, у меня есть библиотека алгоритмов, которая выполняет некоторые аналитические вычисления на кривой (x, y) с общедоступным «входным объектом» вроде этого:

public class InputObject
{
        public double[] X { get; set; }
        public double[] Y { get; set; }
        // + lots of other things well
}

Свойства X и Y этого объекта используются в сотнях мест. внутри библиотеки, обычно с использованием индексов. Входной объект никогда не изменяется алгоритмами, но на самом деле это не имеет значения. Также довольно часто вызывается .Length . Это математическая библиотека, и double [] является там своего рода стандартным типом данных. В любом случае для исправления CA1819 потребуется немало усилий.

Я думал об использовании List , так как списки поддерживают индексацию и очень похожи на массивы, но я не уверен, может ли это замедлить работу алгоритмов или FxCop будет доволен этими списками .

Как лучше всего заменить эти свойства double [] ?

13
задан Community 23 May 2017 в 11:52
поделиться