Я раньше встречался с этим правилом 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<double>
, поскольку списки поддерживают индексирование и очень похожи на массивы, но я не уверен, может ли это замедлить алгоритмы, или FxCop будет доволен этими списками.
Каков наилучший вариант для замены этих свойств double[]
?