[英]How to cast object[] to double[][] in C#
我有类似的东西
var a = new object[2]
{
new double[1] { 0.5 },
new double[1] { 0.5 }
}
我想将其转换为double[][]
。 我尝试(double[][])a
和a.Cast<double[][]>()
但它没有用
您尝试执行a.Cast<double[][]>()
几乎是正确的。 您可以使用:
double[][] b = a.Cast<double[]>().ToArray();
解释:
double[]
s,但它们静态类型为object
。 要更改列表元素的 static 类型,您可以使用 LINQ 的Cast<T>
。Cast<T>
将元素的类型作为T
,而不是结果列表的类型(这就是您尝试使用Cast<double[][]>
失败的原因)。 Cast<double[]>
产生一个IEnumerable<double[]>
。IEnumerable<double[]>
转换为double[]
数组(即double[][]
),我们可以使用 LINQ 的ToArray()
。请注意,这将
object.ReferenceEquals(a, b)
为 false),但是object.ReferenceEquals(a[0], b[0])
为真)。 您可以使用 LINQ double[][] b = a.Select(x => (double[])x).ToArray();
另一种方法是使用Array.ConvertAll
方法,它采用回调 function 为给定数组中的每个元素调用。
double[][] b = Array.ConvertAll(a, x => (double[])x);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.