在C#中如何将object[]类型转换为double[][]类型?
解决object[]转double[][]的问题
你之前的两种方法都不适用,原因如下:
(double[][])a直接强制转换失败,是因为object[]和double[][]属于完全不同的数组类型,二者没有继承关系,无法直接整体强转。a.Cast<double[][]>()报错,是因为Cast是把数组里的每一个元素转成指定类型,但你的数组元素是double[],不是double[][],类型不匹配。
正确的做法是逐个转换数组里的元素,再重新组装成double[][],有两种常用方式:
方式一:使用LINQ(需要引用System.Linq)
using System.Linq; // ... double[][] result = a.Select(item => (double[])item).ToArray();
方式二:手动遍历赋值
double[][] result = new double[a.Length][]; for (int i = 0; i < a.Length; i++) { result[i] = (double[])a[i]; }
原理很简单:原数组里的每个元素本身就是double[]类型,只要把每个元素单独强转成double[],再放到新的double[][]数组里就可以了,不能直接对整个object[]做类型转换。
内容的提问来源于stack exchange,提问作者sausage_mouse
相关产品推荐
相关产品推荐

