Получить двойной [,] из ILRetArray<double>?

Как я могу получить System.Array (double[,]) из ILRetArray с 2 измерениями? Есть метод ExportValues, но результат двойной [].

1 ответ

Я нашел, как преобразовать ILArray в двойной массив [,]? С модификацией для T[,] в результате:

       private  T[,] ToSystemMatrix<T>(ILInArray<T> A)
    {
        using (ILScope.Enter(A))
        {
            // some error checking (to be improved...)
            if (object.Equals(A, null)) throw new ArgumentException("A may not be null");
            if (!A.IsMatrix) throw new ArgumentException("Matrix expected");
            var dims = A.S.ToIntArray();
            if (dims.Length != 2) throw new ArgumentException("Matrix with 2 Dimensions expected");
            // create return array
            var ret = new T[dims[0], dims[1]];
            // fetch underlying system array
            T[] workArr = A.GetArrayForRead();
            // copy memory block 
            Buffer.BlockCopy(workArr, 0, ret, 0, Marshal.SizeOf(typeof(T)) * A.S.NumberOfElements);
            return ret;
        }
    }
Другие вопросы по тегам