Вы должны быть осторожны с ArrayList
с из-за бокса. Таким образом:
// list is ArrayList
int[] array = Array.ConvertAll(list.ToArray(), o => (int)(double)o);
Обратите внимание, что актерский состав оформлен как (int)(double)
. Это сначала распаковывает в штучной упаковке double
, а затем приводит к int
.
Для этого в более старых версиях .NET
// list is ArrayList
int[] array = Array.ConvertAll(
list.ToArray(),
delegate(object o) { return (int)(double)o; }
);
Альтернатива
// list is ArrayList
int[] array = Array.ConvertAll(
(double[])list.ToArray(typeof(double)),
o => (int)o
);
Здесь нам не нужна операция распаковки, потому что мы сначала преобразовали ArrayList
в массив распакованных double
s.
Для этого в старых версиях .NET
// list is ArrayList
int[] array = Array.ConvertAll(
(double[])list.ToArray(typeof(double)),
delegate(double o) { return (int)o; }
);